我有这样定义的变量:myVar: Observable<Observable<MyObject>[]>
.
我正在使用 Angular4 功能通过异步管道进行枚举
*ngFor="let obsMyObject of (myVar | async)"
现在我有了 MyObject 的 Observable,但我只需要 MyObject。我可以这样写:
<div *ngFor="let obsMyObject of (myVar | async)">
<div *ngIf="let obsMyObject | async; let MyObject"></div>
</div>
但我不能在内部 div 中执行此操作,因为我正在设置 flex order
(这对内部 div 没有任何影响)属性所以我需要这样的东西:
<div *ngFor="let obsMyObject of (myVar | async); let MyObject = (obsMyObject | async)"
[style.order]="MyObject.order">
</div>
我只是有一个想法如何做到这一点,我尝试了这个:
<div *ngFor="let obsMyObject of (myVar | async); let MyObject = obsMyObject)">
{{MyObject}}
</div>
但是MyObject是未定义的,所以没有办法let MyObject = (obsMyObject | async)
会工作。
最佳答案
我认为您想使用 ng-container
和 ngIf
来订阅和创建对可观察对象的引用。然后,您可以在 ng-container
中引用这个新变量,就好像它是一个普通对象一样。
<ng-container *ngIf="myVar$| async as myVar">
<div *ngFor="let obsMyObject of myVar">
{{obsMyObject }}
</div>
</ng-container>
myVar 和 object 的使用真的很困惑。这是一个更好的例子:
组件中的属性声明为:
users$: Observable<User[]>
和模板:
<ng-container *ngIf="users$ | async as users">
<div *ngFor="let user of users">
{{ user.name }}
</div>
</ng-container>
关于angular - 在 Observable 的 Observable 中的 ngFor 中使用异步管道(Angular),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47729570/