您可以将单例服务与 Subject 一起使用,以便在组件之间共享数据(不需要状态管理库)。
使用 angular-cli 创建服务:ng generate service service-name
将服务注入需要共享相同数据的组件的构造函数中:
constructor(private service: MyService) {}
在您的服务中,声明一个负责保存数据的主题(一个 BehaviorSubject 是一个好主意,因为它是用一个值初始化的):
data: BehaviorSubject<any> = new BehaviorSubject<any>('foo');
要从组件更改其值,请使用其next()
上的方法:
constructor(private service: MyService) {}
update(): void {
this.service.data.next('bar');
}
然后为了获得任何组件(或服务/指令......)中的最后一个值,订阅 BehaviorSubject 并使用该值做任何你想做的事情:
constructor(private service: MyService) {}
ngOnInit(): void {
this.service.data.subscribe(value => {
// do whatever
});
}
每次next()
在应用程序的某个地方使用该方法时,其他地方的任何订阅都将获得这个新值。