Как позвонить в Обервабильную лямбду из углового шаблона - PullRequest
0 голосов
/ 21 марта 2019

В компоненте у меня есть что-то вроде этого:

public hasFoo$: Observable<(name: string) => boolean> = ...

Теперь я хочу, чтобы в моем шаблоне было несколько вариантов использования со степпером:

<mat-vertical-stepper>
  <mat-step *ngIf="hasFoo$('1st step')">
    I'm displayed when the 1st name is valid.
  </mat-step>
  <mat-step *ngIf="hasFoo$('2nd step')">
    I'm displayed when the 2nd name is valid.
  </mat-step>
</mat-vertical-stepper>

Как я могу сделать это асинхронно? Я не мог заставить его бежать. Я попытался (hasFoo$ | async)?.call(this, '1st step'), который работал от компонента, но не для моего шаблона. Любые другие идеи?

1 Ответ

0 голосов
/ 21 марта 2019

У вас есть Observable, который приводит к функции? Если это так, вы можете написать это так:

<mat-vertical-stepper *ngIf="hasFoo$ | async as func>
  <mat-step *ngIf="func('1st step')">
    I'm displayed when the 1st name is valid.
  </mat-step>
  <mat-step *ngIf="func('2nd step')">
    I'm displayed when the 2nd name is valid.
  </mat-step>
</mat-vertical-stepper>

Таким образом, как только ваш Observable вернет значение, он будет объявлен как локальная переменная контекста func, и вы можете вызвать его в базовой части шаблона. У вас также будет только одна подписка.

...