2016-07-18 3 views
1

Я создаю приложение Angular2/Dart, в котором мне нравится изменять заголовок заголовка страницы на основе активного компонента.В Dart Angular2 как я могу обновить заголовок заголовка сайта на основе активного компонента?

Я нашел ответ, который основан на rxjs Subject as explained here. Как я могу достичь того же, не используя rxjs Subject as Observable или, более конкретно, какие-либо другие способы сделать это в angular2-dart напрямую?

Здесь working plunker который основан на rxjs Subject lib.

<h1>{{componentTitle}}<h1> 

ответ

1

В Dart используется Stream и StreamController вместо Observable и Subject:

@Injectable() 
export class RouteNames{ 
    StreamController<String> _nameController = new StreamController<String>(); 
    String get name => _nameController.stream; 

    void newName(String name) => _nameController.add(name); 
} 

, то вы можете подписаться как:

AppComponent(this._routeNames){ 
    _routeNames.name.listen((n) => this.routeName = n); 
} 

и обновления может быть отправлено как:

HeroListComponent(
    this._service, 
    this._router, 
    this._routeParams, 
    this._routeNames:RouteNames){ 
    this._selectedId = +routeParams.get('id'); 
    _routeNames.newName('Heroes'); 
} 

Для поддержки нескольких абонентов вы должны сделать этот поток broadcaststream:

@Injectable() 
export class RouteNames{ 
    StreamController<String> _nameController = new StreamController<String>.broadcast(); 

    public get name => _nameController.stream; 

    newName(String name) => _nameController.add(name); 
}