在Dart Angular2中,如何根据活动组件更新站点标题?

时间:2016-07-18 16:13:49

标签: angular dart angular-dart

我正在构建一个Angular2 / Dart应用程序,我想在其中根据活动组件更改页眉标题。

我找到了一个基于rxjs主题as explained here的答案。如何在不使用rxjs的情况下实现相同的主题作为Observable,或者更具体地说,是否还有其他方法可以直接在angular2-dart中执行此操作?

这是working plunker,它基于rxjs Subject lib。

<h1>{{componentTitle}}<h1>

1 个答案:

答案 0 :(得分:1)

在Dart中,您使用StreamStreamController代替ObservableSubject

@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);
}