Originally the dashboard TS expression ``heroes.slice(1, 5))` had been written as: > _heroService.getHeroes().getRange(1, 5) which is brittle; it fails if there are not enough heroes. Slice doesn't fail; an equivalent express ion in Dart is > _heroService.getHeroes().skip(1).take(4) This is now used. Other changes: - Fix in css (missed TS-side update). - Ran `dartfmt` on `heroes_component.dart`.
48 lines
1.0 KiB
Dart
48 lines
1.0 KiB
Dart
// #docplaster
|
|
// #docregion
|
|
import 'dart:async';
|
|
|
|
import 'package:angular2/core.dart';
|
|
// #docregion import-router
|
|
import 'package:angular2/router.dart';
|
|
// #enddocregion import-router
|
|
|
|
import 'hero.dart';
|
|
import 'hero_service.dart';
|
|
|
|
@Component(
|
|
selector: 'my-dashboard',
|
|
// #docregion template-url
|
|
templateUrl: 'dashboard_component.html',
|
|
// #enddocregion template-url
|
|
// #docregion css
|
|
styleUrls: const ['dashboard_component.css']
|
|
// #enddocregion css
|
|
)
|
|
// #docregion component
|
|
class DashboardComponent implements OnInit {
|
|
List<Hero> heroes;
|
|
|
|
// #docregion ctor
|
|
final Router _router;
|
|
final HeroService _heroService;
|
|
|
|
DashboardComponent(this._heroService, this._router);
|
|
|
|
// #enddocregion ctor
|
|
|
|
Future<Null> ngOnInit() async {
|
|
heroes = (await _heroService.getHeroes()).skip(1).take(4).toList();
|
|
}
|
|
|
|
// #docregion goto-detail
|
|
void gotoDetail(Hero hero) {
|
|
var link = [
|
|
'HeroDetail',
|
|
{'id': hero.id.toString()}
|
|
];
|
|
_router.navigate(link);
|
|
}
|
|
// #enddocregion goto-detail
|
|
}
|