我正在开发一个angular 6应用,在我的组件中,我有以下代码:
ngOnInit() {
this.$subscription = this.route.params
.pipe(map(param => param['id']))
.pipe(switchMap(id => {
this.id = id;
console.log(this.id);
return zip(
this.remote1.getDetail(this.id),
this.remote2.getDetail(this.id),
this.remote3.getDetail(this.id)
)
})).subscribe(result => {
console.log(result);
}
运行此代码时,我在控制台上收到此错误:
错误TypeError:您提供了一个无效的对象,该对象应在其中流。您可以提供一个Observable,Promise,Array或Iterable。 在subscriptionTo(vendor.js:181613) 在subscriptionToResult(vendor.js:181765) 在SwitchMap .....
我正确地获得了console.log(this.id)
,但没有正确地获得console.log(result)
。
zip
运算符内的所有方法均返回Observable
。我在这里想念什么?
答案 0 :(得分:1)
Zip接受可观察变量作为输入signature: zip(observables: *): Observable
,因此应为:
ngOnInit() {
this.$subscription = this.route.params
.pipe(map(param => param['id']))
.pipe(switchMap(id => {
this.id = id;
console.log(this.id);
return zip(
of(this.remote1.getDetail(this.id)),
of(this.remote2.getDetail(this.id)),
of(this.remote3.getDetail(this.id)),
)
})).subscribe(result => {
console.log(result);
}