0

我有一个服务,它返回登录用户的权限作为记录。所需的 observable 在我的 ts 文件中定义为成员变量:

permissionsRecord$: Observable<Record<string, boolean>>;

调用服务时,我传递了要检查的授权数组。在这个例子中,我只检查权限“updateInterval”:

constructor() {
    this.permissionsRecord$ = this.japs.userHasPermissionForActions([root.scheduler.order.updateInterval]);
  }

从服务返回的记录具有要检查的授权作为密钥。该值显然可以是真或假。我现在想从我的模板文件中访问记录,如下所示:

<app-scheduler [allowDragAndDrop]="(permissionsRecord$ | async)[root.scheduler.order.updateInterval]">

实际上它工作正常,但我在控制台中看到一个错误。

SchedulerComponent.html:4 ERROR TypeError: Cannot read property 'scheduler.order.updateInterval' of null
    at Object.eval [as updateDirectives] (SchedulerComponent.html:13)
    at Object.debugUpdateDirectives [as updateDirectives] (core.js:45258)
    at checkAndUpdateView (core.js:44270)
    at callViewAction (core.js:44636)
    at execComponentViewsAction (core.js:44564)
    at checkAndUpdateView (core.js:44277)
    at callViewAction (core.js:44636)
    at execEmbeddedViewsAction (core.js:44593)
    at checkAndUpdateView (core.js:44271)
    at callViewAction (core.js:44636)

我不确定我的代码是否正确。如何使用模板中的异步正确访问可观察对象“内部”的记录?

4

2 回答 2

0

如果输出正常,您可以尝试使用 safe/elvis 运算符?,如下所示:

<app-scheduler [allowDragAndDrop]="(permissionsRecord$ | async).root?.scheduler.order.updateInterval">

于 2020-05-04T19:36:33.217 回答
0

尝试

<app-scheduler [allowDragAndDrop]="(permissionsRecord$ | async)?.root.scheduler.order.updateInterval">
于 2020-05-04T21:15:15.683 回答