【问题标题】:NgIf multiple template variables [duplicate]NgIf多个模板变量[重复]
【发布时间】:2020-01-01 16:12:43
【问题描述】:

我发现了

<div
  *ngIf="asyncCond$ | async as c1 && cond2"
></div>

行不通。 有没有办法在一个指令中定义具有多个别名的多个条件?

比如asyncCond1$ | async as c1 &amp;&amp; asyncCond2$ | async as c2 等等。添加() 似乎没有任何影响。

【问题讨论】:

    标签: angular typescript angular-directive


    【解决方案1】:

    您只能使用结构指令声明一个 as 别名,但这是我所做的。

    您可以使用combineLatest() 将多个可观察对象组合在一起并创建在模板中使用的状态对象。您创建一个对象,其中属性是多个可观察值的快照。

       this.state$ = combineLatest(asyncCond1$, asyncCond2$, asyncCond3$).pipe(
          map(([asyncCond1, asyncCond2, asyncCond3]) => ({asyncCond1, asyncCond2, asyncCond3}))
       );
    

    现在您可以在模板中使用这样的状态对象了。

    <ng-container *ngIf="state$ | async as state">
        <div *ngIf="state.asyncCond1 && state.asyncCond2"></div>
        <div *ngIf="state.asyncCond3"></div>
        <div>
           {{state.asyncCond1 ? "Yes" : "No"}}
        </div>
    </ng-container>
    

    对于使用多个可观察对象的更复杂的模板,它使事情变得更容易使用。

    【讨论】:

      猜你喜欢
      • 2016-08-07
      • 2017-12-28
      • 2018-06-20
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多