RxJS中如何给map操作符的判断逻辑新增额外条件避免编译报错?
错误原因
你将逻辑与操作符&&错误写在了pipe()方法的入参位置,pipe()方法仅接收RxJS操作符作为参数,在操作符外直接拼接逻辑判断不符合语法要求,所以编译器抛出错误。
正确修改方案
把新增的判断条件放到map操作符的回调函数内部,和原有判断做逻辑与即可:
canBeTransferred$ = this.userService .getCurrentUser() .pipe(map((user) => (user.data.id === this.ticket.userId || user.data.isCsm || user.data.owner) && this.ticket.status !== 'Archived' ));
拓展说明
如果ticket的status是会动态变更的响应式变量,你需要将ticket的状态也接入流中联动计算,避免ticket更新后canBeTransferred$没有重新触发判断,示例如下(假设ticket$是ticket对应的可观察对象):
canBeTransferred$ = combineLatest([ this.userService.getCurrentUser(), this.ticket$ ]).pipe( map(([user, ticket]) => (user.data.id === ticket.userId || user.data.isCsm || user.data.owner) && ticket.status !== 'Archived' ) );
内容的提问来源于stack exchange,提问作者Rishav Tandon
相关产品推荐
相关产品推荐

