我想在Angular中的表中插入一行,目的是顯示點擊行中對象的信息。數據是從服務中獲取的。我試過不同的方法,this one是什麼讓我最接近。不幸的是,renderer2.setRootElement()方法刪除了點擊行的內容。其次,它似乎像這樣的工作不是在Angular中推薦的。在Angular中動態插入表格的正確方法是什麼?
模板:
<tbody #tbody>
<tr class="row" *ngFor="let ticket of tickets; let i=index" (click)="createInfoBox($event, i, ticket)" id="row_{{i}}">
<td class="col-md-1" id="ticket_state"> {{ ticket["AsstDoc.ProcState"] }}</td>
<td class="col-md-2" id="ticket_date">{{ ticket["AsstDoc.DocDate"] }}</td>
<td class="col-md-4" id="ticket_office">{{ ticket["AsstDoc.CustName"] }} {{ ticket["AsstDoc.DeliveryAddrNo"] || ticket["Addr.Line1"] }}</td>
<td class="col-md-4" id="ticket_shortdescr">{{ ticket["AsstDoc.IntermedText"] || ticket["AsstDocItem.IntermedText"] || ticket.json }}</td>
</tr>
</tbody>
的onClick:
createInfoBox($event, index, ticket) {
this.renderer.selectRootElement(`#row_${index}`).insertAdjacentHTML('afterend', '<tr><td colspan="5">inserted content</td></tr>');
}
我也試過another approach,具有指令,應該找到所有的行,並創建結果的QueryList,從中然後我可以取回指向所點擊的行,並創建一個兄弟。 querylist空虛。
@Directive({
selector: 'tr'
})
export class Rows {
constructor(public viewContainerRef: ViewContainerRef) { }
}
@ViewChildren(Rows) children: QueryList<Rows>;
ngAfterViewInit() {
console.log(this.children)
this.children.changes.subscribe((comps: QueryList <Rows>) =>
{
console.log("comps",comps);
});
}
我今天看到的所有例子都讓我感到困惑,對我而言,正確的方法是什麼?
我最終用ng-bootstrap搭建了一個模式窗口,它看起來比我想要完成的更好,感覺更好 – javahaxxor