In Dart you use Stream
and StreamController
instead of Observable
and Subject
:
@Injectable()
export class RouteNames{
StreamController<String> _nameController = new StreamController<String>();
String get name => _nameController.stream;
void newName(String name) => _nameController.add(name);
}
then you can subscribe like:
AppComponent(this._routeNames){
_routeNames.name.listen((n) => this.routeName = n);
}
and updates can be sent like:
HeroListComponent(
this._service,
this._router,
this._routeParams,
this._routeNames:RouteNames){
this._selectedId = +routeParams.get('id');
_routeNames.newName('Heroes');
}
To support multiple subscribers you need to make the stream a broadcaststream:
@Injectable()
export class RouteNames{
StreamController<String> _nameController = new StreamController<String>.broadcast();
public get name => _nameController.stream;
newName(String name) => _nameController.add(name);
}