2016-08-28 14 views
0

非同期パイプに問題があり、非同期データと静的データの両方に依存するリストが必要です。しかし、私は賢い方法でこれを行う方法を理解することはできません。偽に評価されても* ngIfにもかかわらず非同期パイプがまだ実行中

今、それは次のようになります。

<ul> 
    <li *ngIf="true" *ngFor="let item of list">{{item}}</li> 
    <li *ngIf="false" *ngFor="let item of list | async">{{item}}</li> 
</ul> 

ここでは非常に迷惑な部分は、しかしだ*ngIfがfalseの場合でも、非同期パイプは、まだその事をしようとします。アプリケーションをクラッシュさせ、配列ではなく約束を期待しているため、非同期パイプに間違ったタイプの引数があるというエラーをスローします。

私の質問は、なぜこれを行うのですか、私が欲しいものを達成するためのより良い、より正しい方法は何でしょうか?

+0

あなたのコンポーネントで真または偽のブール変数の値を設定します。 –

答えて

1

モデルを変更して、データが静的であっても、テンプレートにオブザーバブルが得られるようにします。 Observable.of()

例えば、getData()関数から観測可能なデータを取得するとしますが、データが静的である場合は、getStaticData()関数から取得するとします。あなたがするだろう。その結果

モデル

if(isDataStatic){ 
    //convert static data into an observable that emits that data 
    this.list = Observable.of(this.getStaticData()); 
}else{ 
    //however you typically get the observable 
    this.list = this.getData(); 
} 

listは常にあなたのデータは静的であっても、観測可能になります。テンプレートは単純なままです。

テンプレート

<ul> 
    <li *ngFor="let item of list | async">{{item}}</li> 
</ul> 
+0

えええええええええええええええええええええええええええええええええええええええええええええええええええええええええええ、 – Chrillewoodz

+0

@Chrillewoodz 'Observable.of(this.list)'は、リストを発行するObservableを返します。 – BeetleJuice

+0

はい、私は知っていますが、Observableかどうかをどのように確認できますか? – Chrillewoodz

関連する問題