为什么在扩展模板中未定义rowData?可以将其传递给扩展模板。
<ng-template>
<ng-container *ngTemplateOutlet="extensiontemplate; context: rowData"></ng-container>
</ng-template>
<ng-template #extensiontemplate>
<!-- here rowData is undefined -->
</ng-template>
答案 0 :(得分:1)
您必须在模板中添加变量rowData
,例如:
<ng-template #extensiontemplate let-rowdata>
<!-- here rowData is undefined -->
</ng-template>
例如,如果您在context(rowData)中添加了$implicit
属性,则此方法有效,例如,您的rowData
类似于:
rowData = {$implicit: 'row data'};
如果尚未添加隐式属性,则需要在上下文中具有一个以其值为键的变量。
例如,如果您的上下文是
rowData = {somethingElse: 'row data'};
您需要使用如下模板:
<ng-template #extensiontemplate let-rowData="somethingElse">
<!-- here rowData is undefined -->
</ng-template>
请参阅此文档:https://angular.io/api/common/NgTemplateOutlet
修改
对于您的情况,您要传递到另一个模板中的检索到的rowData
没有任何$implicit
值,您需要明确分配它,方法是:
<ng-container *ngTemplateOutlet="extensiontemplate; context: rowData"></ng-container>
<ng-template let-viewDetails="vin" #extensiontemplate>
<tr *ngIf="viewDetails">
<td colspan="3">
Additional row data here for VIN ID: {{viewDetails}}
</td>
</tr>
</ng-template>
在这里检查:https://stackblitz.com/edit/angular-bmq2xi?file=src/app/app.component.html