在使用 RXJS pluck() 之前如何检查 属性 是否存在?

How do I check if property exists before using RXJS pluck()?

如果“canLogin”属性 存在,则以下代码可以正常工作。

this.canLogin$ = this.permissions$.pipe(pluck('canLogin'));

如果 属性 不存在,我会得到这个错误:

ERROR TypeError: Cannot read property 'canLogin' of undefined

如果 属性 不存在,我如何检查 null 或 return null?

我尝试过类似的方法,但它不起作用

this.canLogin$ = this.permissions$.pipe(pluck('canLogin')) || of(false);

那不是因为 属性 不存在。该错误是因为 permissions$ 发出 undefined 并且不能有任何 属性.

因此您可以执行以下操作:

this.canLogin$ = this.permissions$
  .pipe(
    map(obj => obj || {}),
    pluck('canLogin'),
  );