在我使用这个解决方案之前,我的工作正常:
resolve() {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
);
}
现在我必须做一些实际上不起作用的事情:
resolve() {
return this.actions$
.pipe(
ofActionSuccessful(SomeSctonSuccess),
forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
)
);
}
因为我遇到了这个错误:
类型' Observable< [any,any,any,any]>'不可分配 参数类型' OperatorFunction'。类型 ' Observable< [any,any,any,any]>'不提供签名匹配 '(来源:可观察):可观察的'。
任何想法如何解决?
现在我注意到forkJoin
发生ofActionSuccessful(SomeSctonSuccess)
之后才回复{{1}}
答案 0 :(得分:2)
使用exhaustMap
运算符。它映射到内部observable,忽略其他值,直到observable完成
import { forkJoin } from 'rxjs';
import { exhaustMap } from 'rxjs/operators';
resolve() {
return this.actions$
.pipe(
ofActionSuccessful(SomeSctonSuccess),
exhaustMap(() => {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
)
})
);
}
答案 1 :(得分:2)
感谢@Sajeetharan,期待这个url最终使用exhaustMap
resolve() {
return this.actions$.pipe(
ofActionSuccessful(LoadOnPremHostSuccess),
exhaustMap(() => {
return forkJoin(
this.getData1(),
this.getData2(),
this.getData3()
);
})
);
}