typescript - Flera NgTemplate i angular 7
Jag har ett Angular 7-projekt. Och jag skrev <ng-template> och det skickar min rowData. När jag skrev en ng-template som nedan fungerade allt perfekt. Men jag behöver flera ng-template. Jag försökte något som nedan. Men jag kunde inte köra det. Hur kan jag uppnå detta?
Det här fungerar perfekt
app.grid.component.html
<ng-template pTemplate="body" let-rowData>
<tr>
<td *ngFor="let col of Columns" class="ui-resizable-column">
<span>{{rowData[col.field]}}</span>
</td>
<td>
<ng-template *ngTemplateOutlet="templateRef; context : {rowData : rowData}"></ng-template>
</td>
</tr>
</ng-template>
app.grid.component.ts
export class GridComponent implements OnInit {
@ContentChild(TemplateRef) templateRef: TemplateRef<any>;
}
mycomponent.html
<app-grid>
<ng-template let-rowData="rowData">
<button type="button" label="Update" (click)="update(rowData)"
</ng-template>
</app-grid>
Men jag vill ha flera som nedan
app.grid.component.html
<ng-template pTemplate="body" let-rowData>
<tr>
<td *ngFor="let col of Columns" class="ui-resizable-column">
<span>{{rowData[col.field]}}</span>
</td>
<td>
<ng-template *ngTemplateOutlet="templateRef; context : {rowData : rowData}"></ng-template>
</td>
<td>
<ng-template *ngTemplateOutlet="templateRef2; context : {rowData : rowData}"></ng-template>
</td>
</tr>
</ng-template>
app.grid.component.ts
export class GridComponent implements OnInit {
@ContentChild(TemplateRef) templateRef: TemplateRef<any>;
@ContentChild(TemplateRef) templateRef2: TemplateRef<any>;
}
mycomponent.html
<app-grid>
<ng-template let-rowData="rowData" [ngForTemplate]="templateRef">
<button type="button" label="Delete" (click)="delete(rowData)"></button>
</ng-template>
<ng-template let-rowData="rowData" [ngForTemplate]="templateRef2">
<button type="button" label="Update" (click)="update(rowData)"></button>
</ng-template>
</app-grid>
Svar #1
Jag hittade svaret. Du kan se det från denna stackblitz-länk. (Denna stackblitz är inte exakt samma. Men logiken är exakt densamma.)
STACKBLITZ
Svar #2
Du bör använda @ContentChildren istället för @ContentChild
@ContentChildren(TemplateRef) tabs: QueryList<TemplateRef>;
