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





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