gpt4 book ai didi

angular - 将 javascript 生成的元素插入 primeng turbotable?

转载 作者:搜寻专家 更新时间:2023-10-30 21:58:20 28 4
gpt4 key购买 nike

我正在用 PrimeNG 的 turbotable 替换定制的 table 。我有一些按钮需要插入到表中,这些按钮调用了我编写的特殊 javascript 函数,但我一直在研究如何将元素插入到表中。

它显示为 [object HTMLInputElement] 而不是按钮。我知道生成按钮的代码很好,因为它在旧表设置中运行良好。我认为问题在于 turbotable 它将它转换为文本,我不确定如何让它保持 HTML。

这是显示的内容。

enter image description here

这是涡轮

              <p-table [columns]="resultsCols" [value]="results">
<ng-template pTemplate="caption">
Agencies &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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);
}

最后,这里是 agencySearchResult 在 typescript 中定义的地方

export class agencySearchResult {
constructor() {};

agency: string;
department: string;
affiliateCount: string;
basigdate: string;

btnEdit: HTMLInputElement;
}

我认为问题出在 HTML 中的 {{r.btnEdit}} 行,但我包含了所有相关内容以防万一。

互联网,如何将 javascript 生成的 HTML 元素插入 turbotable 中?

最佳答案

您最好在 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

关于angular - 将 javascript 生成的元素插入 primeng turbotable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50878004/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com