【发布时间】:2017-08-23 17:45:11
【问题描述】:
我一直在使用 BehaviorSubject 在组件之间共享数据。
比如说,相对 url /article 属于 ArticleComponent。然后是 ArticlelistComponent 中的 /article/list,其中包含一个包含文章详细信息列表的表格。单击任何行时,我需要将该行详细信息传递给所有其他组件,这就是我的议程。
我面临的问题是,ngOnInit 仅适用于页面重新加载。最初,只有默认 {} 反映在文章组件中,这不过是我为 BehaviorSubject 设置的默认结果。当我单击表中的一行时,该数据不会在 ngOnInit 中自动更新和订阅。旧值 {} 被保留在整个过程中。我不确定将其放置在何处以使更改立即反映出来。请帮忙解决。
我的代码如下:
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中扩展了我的观察
【问题讨论】:
-
您如何更改
articledata更改数据? -
每次点击表格中的任何一行时,从getArticleDetail传递的数据都不同。
-
流程是这样的,。单击一行时,我将该数据从 articlelist 组件传递到此服务。
-
好的。所以这里
return声明是不必要的。 -
没有那个,方法会被认为是无效的吗?
标签: javascript angular behaviorsubject