HTML上的Angular 6别名

HTML上的Angular 6别名,angular,typescript,Angular,Typescript,我需要在HTML中多次使用angular 6中的某些元素,并希望将该元素另存为别名,但如果指令或元素不是*ngIf,则我无法这样做 假设我有这个代码- <dumb-comp [name]="(someObservable | async).name" [role]="(someObservable | async).role" [age]="(someObservable | async).age"> </dumb-comp> 我每次都要使用

我需要在HTML中多次使用angular 6中的某些元素,并希望将该元素另存为别名,但如果指令或元素不是
*ngIf
,则我无法这样做

假设我有这个代码-

<dumb-comp
    [name]="(someObservable | async).name"
    [role]="(someObservable | async).role"
    [age]="(someObservable | async).age">
</dumb-comp>

我每次都要使用异步管道。。。我想在别名上保留
(someObservable | async)
,并在每次需要时使用它。。。有什么解决办法吗

我想在不使用
*ngIf
的情况下使用它,我想知道为什么可能只使用
*ngIf


我知道我可以将所有数据传递给dumb comp,但我想先过滤数据。这里的代码只是一个更大问题的示例

将结果分配给变量

<dumb-comp *ngIf="someObservable | async as res"
     [name]="res.name"
     [role]="res.role"
     [age]="res.age">
 </dumb-comp>

这是一个缺失的、高度要求的角度。不幸的是,他们并不急于添加它。但是,您可以创建自己的自定义指令并使用它。但是,与本机角度模板语法相比,该语法的性能较差

对于
*ngLet
示例,您可以检查ngrx的实现

如果已添加此项,则可以将模板更改为:

<dumb-comp *ngLet="someObservable | async as res"
  [name]="res?.name"
  [role]="res?.role"
  [age]="res?.age">
</dumb-comp>

如前所述,这将导致
res
在等待可观察对象解析时变为
undefined/null


如果您担心多个订阅,可以使用
share()
操作符。这将在订阅者之间共享订阅,然后您可以使用
async
管道(在该可观察对象上),而不会对性能造成任何严重影响

可观察变量上不存在数据,可观察对象只会在新数据到来时得到通知。你可以使用中间件在你的服务或组件中保存上一次数据的副本。我知道我可以使用ngIf,但我不想在我的情况下使用它,实际上我真的想知道我只能在NGIFW上使用它。为什么你不使用ngIf这不是一种愚蠢的方法。ngIf等待可观察到的解析,然后将其分配给变量。否则,您将在访问
res
变量时出错。ngIf阻止我们这么做,那么底线是,你不能在angualr?上以内置方式做这件事。@naortalm或者阅读我随附的github问题。没有办法,尽管大多数情况下,
*ngIf
会满足您的需求。但是,当可观察对象返回一个错误的值,并且您仍然希望呈现子组件时,它会变得很混乱。在这种情况下,您可以使用
*ngIf=“{res:someObservable | async}作为数据”
表示法,或者使用自定义
ngLet
指令