有没有办法将管道的结果保存在Angular 2中的模板输入变量中?

有没有办法将管道的结果保存在Angular 2中的模板输入变量中?,angular,Angular,我非常喜欢*ngFor指令的语法。 可以迭代数组的所有元素 我想用一根管子来达到同样的效果。例如async管道。 当将async管道放在我的模板中的任何地方,我使用了一个可观察结果的属性时,我有很多订阅正在进行,我的模板被类似{(someobserveable$|async)?.propertyName}的东西弄得乱七八糟。 有没有一种方法可以像这样简单地将管道的当前结果绑定到模板输入变量 <div let="currentValue = someObservable$ | async"&

我非常喜欢
*ngFor
指令的语法。 可以迭代数组的所有元素

我想用一根管子来达到同样的效果。例如
async
管道。 当将
async
管道放在我的模板中的任何地方,我使用了一个可观察结果的属性时,我有很多订阅正在进行,我的模板被类似
{(someobserveable$|async)?.propertyName}
的东西弄得乱七八糟。 有没有一种方法可以像这样简单地将管道的当前结果绑定到模板输入变量

<div let="currentValue = someObservable$ | async">
  {{currentValue?.foo}}, {{currentValue?.bar}}
  ...
</div>

支持这一点还有一个悬而未决的问题

目前,可以分配给模板变量的内容非常有限

  • 对添加标记的元素或组件的引用
  • exportAs
    like
  • ngFor
    中的
    let i=index
    ,以及其他指令中类似的预定义变量
作为解决方法,您可以在组件类的方法中执行表达式,并使结果在视图可以绑定到的属性中可用

无论如何,不鼓励模板中存在过多逻辑。

是!从4+开始:

<div *ngIf="userObservable | async; else loading; let user">
  Hello {{user.last}}, {{user.first}}!
</div>
<template #loading>Waiting...</template>

你好{{user.last},{{user.first}!
等待。。。

谢谢您的快速回答!我对解决方案的关注点是性能(请参阅),以及我始终必须实现
OnDestroy
接口才能再次取消对observable的订阅。为完全相同的问题寻找解决方案。。希望将来有可能。。
<div *ngIf="userObservable | async; else loading; let user">
  Hello {{user.last}}, {{user.first}}!
</div>
<template #loading>Waiting...</template>