在继承的组件之间切换可观察数据时出现问题

Trouble switching observable data between inherited components

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

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% 正确的)

第一期可以尝试使用RxJS iif功能

get codeData$(): Observable<Codes.Code[]> {
  return iif(
    () => Codes.Type.Fix,
    this.store.select(FixCodesState.getCodes),
    this.store.select(FreeCodesState.getCodes)
  );
}

[value]="сodeData$ | async"