我是Angular的新手,所以請原諒我,不要使用正確的術語。角度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