我正在构建一个Angular2 / Dart应用程序,我想在其中根据活动组件更改页眉标题。
我找到了一个基于rxjs主题as explained here的答案。如何在不使用rxjs的情况下实现相同的主题作为Observable,或者更具体地说,是否还有其他方法可以直接在angular2-dart中执行此操作?
这是working plunker,它基于rxjs Subject lib。
<h1>{{componentTitle}}<h1>
答案 0 :(得分: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');
}
要支持多个订阅者,您需要将流设为广播流:
@Injectable()
export class RouteNames{
StreamController<String> _nameController = new StreamController<String>.broadcast();
public get name => _nameController.stream;
newName(String name) => _nameController.add(name);
}