在我关注的组件中:
// this.can... are booleans
redux
.watch(state => state.userInfo.access.current)
.takeUntil(this.done)
.subscribe(access =>
[this.canPartners, this.canServices, this.canTens, this.canWorklist] =
[EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist]
.map(ii => access[ii] >= EAccess.Read));
我想知道如何将Observable分割成类似的东西:
// this.can...$ are Observable<boolean>s
[this.canPartners$, this.canServices$, this.canTens$, this.canWorklist$] = redux
.watch(ReduxGetters.userAccess)
.takeUntil(this.done)
.?mapSplit?(access => [EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist].map(ii => access[ii] >= EAccess.Read));
更新
我在使用rxjs BTW,这意味着我受到那里提供的运营商的限制。我到达那里的最近的是:
const result$: Observable<Observable<boolean>[]> = redux
.watch(ReduxGetters.userAccess)
.takeUntil(this.done)
.map(access =>
[EPermission.Partner, EPermission.Worklist, EPermission.Tens, EPermission.Worklist]
.map(ii => Observable.of(access[ii] >= EAccess.Read)));
...现在我只是需要摆脱包装器Observable ......
答案 0 :(得分:0)
你可能想尝试这样的事情
// this.can...$ are Observable<boolean>s
redux
.watch(ReduxGetters.userAccess)
.takeUntil(this.done)
.reduce((accumulatorArray, current) => {
accumulatorArray.push(current >= EAccess.Read)
}, new Array<boolean>())
.submit(
arrayOfBooleans => [this.canPartners$, this.canServices$, this.canTens$, this.canWorklist$] = arrayOfBooleans
)
我无法尝试这个,但也许它有效