我正在用PrimeNG的可涡轮机取代定制的桌子。我有一些按钮需要插入到表中,调用我编写的特殊javascript函数,但我仍然坚持如何将元素插入表中。
它显示为[object HTMLInputElement]
而不是按钮。我知道生成按钮的代码很好,因为它在旧表设置中运行良好。我认为问题在于它可以将其转化为文本而且我不确定如何使其保持HTML。
这就是显示的内容。
这是可涡轮式的
<p-table [columns]="resultsCols" [value]="results">
<ng-template pTemplate="caption">
Agencies Count {{results?.length}}
</ng-template>
<ng-template pTemplate="header">
<tr>
<th >Options</th>
<th [pSortableColumn]="'agency'" >Agency</th>
<th [pSortableColumn]="'department'" class="ui-p-2">Department</th>
<th [pSortableColumn]="'affiliateCount'" class="ui-p-4">Affiliate Count</th>
<th [pSortableColumn]="'basigdate'" class="ui-p-6">BA Sig Date</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-r>
<tr>
<td> {{r.btnEdit}}</td>
<td >{{r.agency}}</td>
<td class="ui-p-2">{{r.department}}</td>
<td class="ui-p-4">{{r.affiliateCount}}</td>
<td class="ui-p-6">{{r.basigdate}}</td>
</tr>
</ng-template>
</p-table>
以下是我如何生成按钮并填充结果数组
var result = JSON.parse(xmlhttp.responseText);
for (var i = 0; i < result.length; i++) {
var inputEdit = document.createElement("input");
inputEdit.type = "button";
inputEdit.value = "Edit";
inputEdit.classList.add("btn-link");
inputEdit.onclick = (
function(i) {
return function() {
comp.setEditMode(i);
}
}
)(result[i].id);
var a = new agencySearchResult();
a.agency = result[i].name;
a.affiliateCount = result[i].affiliateCount;
a.basigdate = result[i].baSigDate;
a.department = result[i].department;
a.btnEdit = inputEdit;
comp.results.push(a);
}
最后,这里是在typescript
中定义agencySearchResult
的地方
export class agencySearchResult {
constructor() {};
agency: string;
department: string;
affiliateCount: string;
basigdate: string;
btnEdit: HTMLInputElement;
}
我认为问题是HTML中的{{r.btnEdit}}
行,但为了以防万一,我包含了所有相关内容。
所以Internet,你如何将javascript生成的HTML元素插入到可编辑的?
答案 0 :(得分:0)
您最好在HTML组件文件中编写HTML按钮,而不是在TS代码中生成它。
所以我建议你替换
<td> {{r.btnEdit}}</td>
和
var inputEdit = document.createElement("input");
inputEdit.type = "button";
inputEdit.value = "Edit";
inputEdit.classList.add("btn-link");
inputEdit.onclick = (
function(i) {
return function() {
comp.setEditMode(i);
}
}
)(result[i].id);
类似
<td><input type="button" value="Edit" class="btn-link" (click)="edit(r.id)"/></td>
和
edit(rowId) {
alert('Edition of row ' + rowId);
// do whatever you need
}
更简洁,更易读。
请参阅此StackBlitz