我很好地进入了这条路线:
http://localhost:8100/questions/question?id=3
现在我遇到了麻烦,如何处理两个订户在同一时间。
第一个订阅者从外部服务加载问题数组。
第二个函数根据route参数获取所需的Question
对象。
app_data:AppData;
question:Question;
ngOnInit() {
this.appService.app_data.subscribe((v) => { this.app_data = v; });
this.route.queryParams.subscribe(p => {
this.question = this.appService.app_data.questions.find(i => i.id === params.id);
});
}
问题是当我打开这个路由时,它试图过滤服务仍然没有加载的数组。
错误类型错误:无法读取未定义的属性(正在读取"find")
我做错什么了吗?
1条答案
按热度按时间c9qzyr3d1#
建议使用
combineLatest
rxjs运算符来合并多个可观测值,并获取最后发出的值。当任何可观察对象发出一个值时,发出每个可观察对象最后发出的值。
Demo @ StackBlitz
奖金:
forkJoin
的目的是等待可观察对象先完成,然后再完成下一个,但是route.params
,route.queryParams
observables will never be completed,因此forkJoin
在此场景中不起作用。