2017-12-21 12 views
0

NgForは、配列を反復処理することによってドロップダウンまたはリストを作成します。しかし、Observablesは、私のケースのオブジェクトでは、既に "反復"されている一連のデータを提供しています。なぜループ?ちょうどオプションを作るために働くことができます。角度5 - ポピュレートオプションマットでオブジェクトを選択しますか? NgForではありませんか?

{skill_id: 8, skill_name: "Whatever"} 
{skill_id: 9, skill_name: "Something"} 

NgForに替わるべきオブジェクトのような素敵なストリームがある場合、配列は必要ありません。私はこのような何かを考え、物体が観測から受信されているように、新しいオプション作成しています:

<mat-select placeholder="Select one"> 
    <mat-option (click)="loadIdValueInForm(skill_id)" 
        [value]="skill_name">{{skill_name}} 
    </mat-option> 
</mat-select> 

は、オブジェクトの配列から、さまざまな方法でこれを行う古いポストのさまざまありますが、それは次のようになりますObservableの一般的な設定の結果を参考にすれば、より良い結果が得られます。何か案は?これについて創造的な人は誰ですか?

private getListData(dbTable) { 
    this.skills$ = this.httpService.getDropDownList(dbTable) 
     .map(data => data.resource) 
     .switchMap(data => data) 

答えて

0

あなたは、観察を反復処理したい場合は、そのためasyncパイプを使用することができます。あなたの例では

<mat-option (click)="loadIdValueInForm(skill_id)" 
        *ngFor="let skill of skills$ | async" 
        [value]="skill.skill_name">{{skill_name}} 
    </mat-option> 

次に、あなたのコードから次の部分を削除することができます。

.map(data => data.resource) 
+0

感謝を@TheUnrealが、私は非同期パイプを持っており、それは、select要素にオブジェクトを置き、 NgForはエラーをログに記録します。私の質問はそれに関するものではないので、これは上ではありませんが、それは私のコードとよく認識されている問題です。まともな解決策を見つけようとする多くのSOの投稿が、ほとんどがハックの回答です。また、Postgresが提供するリソースオブジェクトの内部にあるデータオブジェクトにアクセスする必要があります。 NgForは配列を要求しますが、キー値オブジェクトの配列は要求しません。それができれば、多くの開発者にとって、人生はより簡単になります。 – Preston

関連する問題