在我的一个组件中,我有以下几个:
// 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));我想知道怎样才能将可观察对象分解成这样的东西:
// 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)));...now我“只是”需要去掉可观察到的包装器...
发布于 2018-03-22 20:58:06
您可能想要尝试这样的操作
// 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
)我不能尝试这个,但也许能行得通
https://stackoverflow.com/questions/49428519
复制相似问题