我一直在使用BehaviorSubject在组件之间共享数据 . 比方说,relative url / article属于ArticleComponent . 然后是ArticlelistComponent中的/ article / list,其中包含一个包含文章详细信息列表的表 . 单击任何行,我需要将行详细信息传递给所有其他组件,并确保将其放置在哪里以便进行变化立即反映 . 请帮忙解决 . 我的代码如下:
articlelist.component.ts
getSpecificDetail(value){
this.articleService.getArticleDetail(value);
}
article.service.ts
public articledata=new BehaviorSubject<Object>({});
currentdata=this.articledata.asObservable();
getArticleDetail(data){ //data comes from articlelist.component
return this.articledata.next(data);
}
article.component.ts
ngOnInit(){
this.articleService.currentdata.subscribe(data=>{
this.data=data;
console.log(this.data);
})
}
编辑:我在Angular2:RxJS Subject not responding to events扩展了我的观察
2 回答
根据您对该数据的处理方式,在绑定到该数据的组件之间共享数据的另一种方法是利用Angular的更改检测而不是使用您自己的
BehaviorSubject
.我在这里有一篇关于它的博客文章:https://blogs.msmvps.com/deborahk/build-a-simple-angular-service-to-share-data/
还有一个玩家:https://plnkr.co/edit/KT4JLmpcwGBM2xdZQeI9?p=preview
它应该像这样工作(这是我一直使用Observables和Subjects的方式) . 我总是试图确保我从主机服务触发并提供订阅,以保持关注点 .
文章组件
article.service.ts
article.component.ts
您是否特别使用行为主题?