如何从角度模板调用Obervable Lambda

时间:2019-03-21 16:05:38

标签: angular rxjs observable

在组件中,我有这样的东西:

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 :(得分:0)

您有一个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,您可以在模板的基础部分中对其进行调用。您还将只有一个订阅。