angular - 在 Observable 的 Observable 中的 ngFor 中使用异步管道(Angular)

标签 angular angular-template angular-pipe

我有这样定义的变量: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-containerngIf 来订阅和创建对可观察对象的引用。然后,您可以在 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/

相关文章:

Angular2 获取表单控件的现有验证器

用户角色的 AngularFire2 路由守卫

javascript - 在 Angular 4 中使用 bootstrap 4 或 ng-bootstrap 组件

javascript - 从嵌套的 json 中排序的 Angular 4 数据表

javascript - 如何在 Angular 模板中显示日期和时间并保持更新?

javascript - 第一个下拉列表选择不会过滤第二个下拉列表

angularjs - 转换 angular2 下的 <select>

javascript - Angular 6 - 为子模块导入共享模块

angular - Ionic 3 货币格式

Angular :limitTo 管道不工作