我想我的问题有一个非常简单的解决方案,但我找不到。 我想写第二个订阅的值
export class ArticleDetailComponent implements OnInit {
private articleID: any;
public detailArticle: any ;
constructor( private route: ActivatedRoute , private _articlesService: ArticlesService ) {
}
ngOnInit () {
this.route.params.subscribe( (params) => {
this.articleID = params['id'];
this._articlesService.getArticle(this.articleID).subscribe( article => this.detailArticle = article );
}
);
}
}
我想将第二个订阅的值写入“detailArticle
”
但是因为我已经打电话给一个订阅,我认为请求和他们到达的时间有所不同。
在价值中它记录了一个“未定义的”
当其中一个订阅者进入另一个时,我如何同步两个订阅()?
我的想法是设置结果值detailArticle
所以我可以在模板中使用它。
答案 0 :(得分:1)
您正在寻找的是rxjs的switchMap
运算符(请参阅其文档here):
this.route.params
.do(params => this.articleID = params['id'])
.switchMap(
params => this._articlesService.getArticle(this.articleID)
)
.subscribe( article => this.detailArticle = article );
简单来说,它会使你的params可观察并启动一个新的observable来获取你的文章,结果会合并回原始的observable,因此可以在你的订阅中使用。