70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
		
		
			
		
	
	
			70 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
|  | // #docplaster
 | ||
|  | // #docregion
 | ||
|  | import 'dart:async'; | ||
|  | 
 | ||
|  | import 'package:angular2/core.dart'; | ||
|  | import 'package:angular2/router.dart'; | ||
|  | 
 | ||
|  | import 'hero.dart'; | ||
|  | import 'hero_detail_component.dart'; | ||
|  | import 'hero_service.dart'; | ||
|  | 
 | ||
|  | @Component( | ||
|  |     selector: 'my-heroes', | ||
|  |     templateUrl: 'heroes_component.html', | ||
|  |     styleUrls: const ['heroes_component.css'], | ||
|  |     directives: const [HeroDetailComponent]) | ||
|  | class HeroesComponent implements OnInit { | ||
|  |   final Router _router; | ||
|  |   final HeroService _heroService; | ||
|  |   List<Hero> heroes; | ||
|  |   Hero selectedHero; | ||
|  |   // #docregion error
 | ||
|  |   String errorMessage; | ||
|  |   // #enddocregion error
 | ||
|  | 
 | ||
|  |   HeroesComponent(this._heroService, this._router); | ||
|  | 
 | ||
|  |   // #docregion addHero
 | ||
|  |   Future<Null> addHero(String name) async { | ||
|  |     name = name.trim(); | ||
|  |     if (name.isEmpty) return; | ||
|  |     try { | ||
|  |       heroes.add(await _heroService.save(name)); | ||
|  |     } catch (e) { | ||
|  |       errorMessage = e.toString(); | ||
|  |     } | ||
|  |   } | ||
|  |   // #enddocregion addHero
 | ||
|  | 
 | ||
|  |   // #docregion deleteHero
 | ||
|  |   Future<Null> deleteHero(int id, event) async { | ||
|  |     try { | ||
|  |       event.stopPropagation(); | ||
|  |       await _heroService.delete(id); | ||
|  |       heroes.removeWhere((hero) => hero.id == id); | ||
|  |       if (selectedHero?.id == id) selectedHero = null; | ||
|  |     } catch (e) { | ||
|  |       errorMessage = e.toString(); | ||
|  |     } | ||
|  |   } | ||
|  |   // #enddocregion deleteHero
 | ||
|  | 
 | ||
|  |   Future<Null> getHeroes() async { | ||
|  |     heroes = await _heroService.getHeroes(); | ||
|  |   } | ||
|  | 
 | ||
|  |   void ngOnInit() { | ||
|  |     getHeroes(); | ||
|  |   } | ||
|  | 
 | ||
|  |   void onSelect(Hero hero) { | ||
|  |     selectedHero = hero; | ||
|  |   } | ||
|  | 
 | ||
|  |   Future<Null> gotoDetail() => _router.navigate([ | ||
|  |         'HeroDetail', | ||
|  |         {'id': selectedHero.id.toString()} | ||
|  |       ]); | ||
|  | } |