私は角に新しいですので、私が覚えていない場合は私には正しい用語を使用してください。角4:約束を返す方法に一度だけバインドしてください
私はメソッド呼び出しにtdデータをバインドすることによってテーブルを動的に作成しようとしています。このように:
<tbody>
<tr *ngFor="let rw of ParameterRowData" >
<td *ngFor="let field of fields" class="lalign" [innerHTML]="getCellData(field, rw.ParameterData)" ></td>
<td><a >Edit</a> </td>
</tr>
</tbody>
これは、使用可能な列とデータがサーバーから返されるまでわからないためです。私の問題は、getCellDataメソッドが繰り返し呼び出されていることです。ブラウザはフリーズしますが、コンソールでは何度も何度も呼び出されています。私はそれを一度呼びたいだけです。
次のようにgetCellData方法は次のとおりです。
getCellData(field: ParamField, fields : ParameterRowFieldContract[]) : Promise<string>
{
for(var i=0; i<fields.length; i++)
{
if(fields[i].Name===field.DisplayName)
{
console.log('a');
if(field.DataType == "FOREIGNKEYLIST")
{
//getforeign key value to display
console.log('b');
var value = this.paramService.getParameterDataWithId(field.ForeignParameter, fields[i].Value)
.then(para => {
for(var k=0; k<para.ParameterData.length; k++)
{
console.log('c');
if(para.ParameterData[k].Name===field.ForeignField)
{
console.log('foreign ='+ para.ParameterData[k].Value);
return para.ParameterData[k].Value;
}
}
});
return value;
}
else
{
return Promise.resolve(fields[i].Value);
}
}
}
}
私はちょうどHTMLのtd要素にサービスから返された値を表示したい日の終わりに。私はこの問題を解決するための代替ルートを用意しています。データがテーブルにロードされると、データは編集されませんが、一方向バインディングが役立つかどうかわかりませんし、一方向または双方向バインディングの実装方法もまだ理解していません。
ありがとうございました。
あなたはそのようなアプリケーションを構築する前に角度の概念をよく理解する必要があります。 –
それは本当です。しかし、私は深い終わりに投げ込まれました。これは印象づけるチャンスですので、選択はしないでください。 – peterpie
おそらくカスタム角パイプが簡単な解決策でしたか?この質問の最後の解決策のように:[stackoverflow question](https://stackoverflow.com/questions/34363161/angular-2-displaying-async-object-data-from-promise) – peterpie