Как вызвать наблюдаемую лямбду из углового шаблона

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

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'), который работал из компонента, но не для моего шаблона. Любые другие идеи?

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
91
1

Ответы 1

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

Другие вопросы по теме