2017-12-15 4 views
0

角度のある5のプロジェクトで作業しています。私のフォームの1つでは、Webサービスからドロップダウンの値を取得する必要があります。これは私が次のようにデータをフェッチしています、私は自分のフォームデータを宣言する方法ngOnInit非同期パイプフォームのマットオプション値の使用方法は?

formData:Observable<{ 
    taxList: { 
    label: string, 
     Value: number 
    }[], 
    category: { 
     label: string, 
     Value: number 
    }[] 
}>; 

です。

this.dataService.getFormData().subscribe((data) => { 
    this.formData = data.content; 
}); 

そして、私のテンプレートでは、

<mat-form-field class="common-form-field"> 
    <mat-select formControlName="taxId"> 
     <mat-option *ngFor="let tax of (formData.taxList | async)" [value]="tax.value"> 
      {{ tax.label }} 
     </mat-option> 
    </mat-select> 
</mat-form-field> 

私はエラーと可能な解決策は何 、コンソールでエラーが発生してCannot read property 'taxList' of undefinedInvalidPipeArgument: '[object Object],[object Object]' for pipe 'AsyncPipe'のですか?ありがとうございます

答えて

1

asyncパイプを取り外します。オブザーバブルに登録しているので、非同期パイプを再度使用する必要はありません。

<mat-option *ngFor="let tax of formData.taxList" [value]="tax.value"> 

または多分あなたは、私が非同期パイプを削除しようとしたformData変数Observable

formData : Observable<Array<any>> 
ngOnInit() {  
    this.formData = this.dataService.getFormData(); 
} 


<mat-option *ngFor="let tax of formData.taxList | async " [value]="tax.value"> 
+0

を作ることができます。エラーが発生しました。 '未定義のtaxList'プロパティを読み取れません。 formData変数は初期化されていないためです。 httpを使用してWebサービスから取得した後にのみ初期化されます。 – shafeequemat

+0

コンストラクタで 'taxList'プロパティを空の配列として初期化します –

+0

これでformDataオブジェクトの型を宣言できません。この状況で非同期パイプを使用できますか? – shafeequemat

関連する問題