在继承组件之间切换可观察数据时出现故障



我有基本组件和两个继承的组件。每个组件都从自己的服务中获取数据,这些服务被投影到状态。如果我尝试使用以下方法-数据切换不正确:

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"

最新更新