2017-12-09 7 views
1

私はこのように定義された変数:myVar: Observable<Observable<MyObject>[]>を持っています。私は非同期パイプngForで非同期パイプを使用Observables(Observables)(Observables)(角)

*ngFor="let obsMyObject of (myVar | async)" 

に列挙するAngular4機能を使用しています

今私はMyObjectにの観測があるが、私は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> 

私はこれを行う方法を1つのアイデアを持っていた、と私はこの試みた:

<div *ngFor="let obsMyObject of (myVar | async); let MyObject = obsMyObject)"> 
    {{MyObject}} 
</div> 

をしかしMyObjectには定義されていませんので、let MyObject = (obsMyObject | async)がうまくいく方法はありません。

+0

は何 'obsMyObject'と' MyObject'の違いすべきですか? –

+0

なぜ観測可能な観測可能性がありますか?それはあなたがそれを提供するものを書き換える必要があるように思えます。 mapではなくflatMapを使用します。 – jonrsharpe

+0

'obsMyObject'は' BehaviorSubject 'であり、それを使ってstyle.orderプロパティを設定することはできません。 – Makla

答えて

0

私はあなたがサブスクライブしてオブザーバブルへの参照を作成するには、ng-containerngIfを使いたいと思っています。その後、ng-containerの中から、この新しい変数を単純なオブジェクトであるかのように参照することができます。

<ng-container *ngIf="myVar$| async as myVar"> 
    <div *ngFor="let obsMyObject of myVar"> 
    {{obsMyObject }} 
    </div> 
</ng-container> 

myVarとオブジェクトの使用は本当に混乱します。コンポーネントで

プロパティとして宣言:ここでは、より良い例です

users$: Observable<User[]> 

テンプレート:

<ng-container *ngIf="users$ | async as users"> 
    <div *ngFor="let user of users"> 
    {{ user.name }} 
    </div> 
</ng-container> 
+0

これはそうではありません。私は 'Observable []>'があり、これは 'Observable 'ではありません。 2つのObservablesが必要です。これは、ユーザーとユーザーの両方が変更されるためです。 – Makla