code
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class CommonService {
private notify = new Subject<any>();
/**
* Observable string streams
*/
notifyObservable$ = this.notify.asObservable();
constructor() { }
public notifyOther(data: any) {
if (data) {
this.notify.next(data);
}
}
}
项目示例
表单提交后更新其他组件数据列表
定义:
constructor( private router: Router, private actRouter: ActivatedRoute, private appStoreService: AppStoreService, private comService: CommonService) { this.subscribeUpdate(comService); } subscribeUpdate(comService: CommonService) { this.comService.notifyObservable$.subscribe(data => { if (data == 'refreshWebApp') { this.loadWebApp(); } }, error => { console.log(`subscribe error:${error}`) }) }
调用:
this.comService.notifyOther('refreshWebApp');