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

In Dart Angular2 how can I update site header title based on active component?

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

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

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

<h1>{{componentTitle}}<h1>

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