我有基本组件和两个继承的组件。每个组件都从自己的服务中获取数据,这些服务被投影到状态。如果我尝试使用以下方法-数据切换不正确:
get codeData$(): Observable<Codes.Code[]> {
return this.store.select(Codes.Type.Fix ? FixCodesState.getCodes : FreeCodesState.getCodes);
}
[value]="сodeData$ | async"
但这个丑陋的解决方案奏效了:
@Select(FixCodesState.getCodes)
fixCodeData$: Observable<Codes.Code[]>
@Select(FreeCodesState.getCodes)
freeCodeData$: Observable<Codes.Code[]>
[value]="(isFixCode ? fixCodeData$ : freeCodeData$) | async"
为什么?
我也尝试过使用这个:
getCodes: typeof GetFreeCodes | typeof GetFixCodes;
this.getCodes = this.codeType === Codes.Type.Fix ? GetFixCodes : GetFreeCodes;
this.store.dispatch(new this.getCodes(this.codePageQuery))
而不是这个:
this.store
.dispatch(
this.codeType === Codes.Type.Fix
? new GetFixCodes(this.codePageQuery)
: new GetFreeCodes(this.codePageQuery)
)
不确定它是否也能正常工作(但第一个问题是100%正确的(
您可以尝试将RxJSiif
函数用于第一期
get codeData$(): Observable<Codes.Code[]> {
return iif(
() => Codes.Type.Fix,
this.store.select(FixCodesState.getCodes),
this.store.select(FreeCodesState.getCodes)
);
}
[value]="сodeData$ | async"