Получите ценность наблюдаемого > используя AsyncPipe - PullRequest
0 голосов
/ 04 мая 2020

У меня есть служба, которая возвращает разрешения для вошедшего в систему пользователя как запись. Требуемый наблюдаемый объект определен в моем 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)

Я не уверен, верен ли мой код. Как я могу правильно получить доступ к записи «внутри» наблюдаемого, используя asyn c из шаблона?

Ответы [ 2 ]

0 голосов
/ 05 мая 2020

попробовать

<app-scheduler [allowDragAndDrop]="(permissionsRecord$ | async)?.root.scheduler.order.updateInterval">
0 голосов
/ 04 мая 2020

Если результат в порядке, вы можете попробовать использовать оператор safe / elvis ? вот так:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...