我是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