【发布时间】:2017-11-29 09:43:49
【问题描述】:
我正在尝试为某些单元格创建一个使用不同 ng-template 的表格,具体取决于单元格中的某些数据。 (在这种情况下,如果单元格在“实体”列中,我想要一个显示照片以及常规数据的模板。)
使用*ngIf,我可以轻松切换表格中的ng-template。但是当我在切换的模板中时,我不再知道如何访问来自周围 ngFor 循环的单元格数据。
模板输入变量称为“单元格”。
我以为我可以使用let-value="cell" 将cell 传递给新模板,但它不起作用。在模板内部,变量“value”是未定义的。即使使用let-,我也检查了“单元格”是否在没有我的范围内,但它也不是。
如何访问与*ngIf 交换的各种ng-templates 中的“单元格”模板输入变量?
<table>
<tr *ngFor="let row of tableArray">
<td *ngFor="let cell of row">
<ng-container *ngIf="cell.column === 'Entity' then photoTemplate else cellTemplate"></ng-container>
</td>
</tr>
</table>
<ng-template #cellTemplate let-value="cell">
{{value.display}} <<<==========DOESN'T WORK
</ng-template>
<ng-template #photoTemplate>
{{cell.display}} <<<======= DOESN'T WORK EITHER WITHOUT THE let-
</ng-template>
抱歉新手问题。我来自 AngularJS,Angular 5 对我来说很新。我搜索了文档,但找不到任何东西。
谢谢
约翰
PS 这与suggested duplicate 略有不同,因为我正在尝试将动态模板与 ngIf 一起使用,这是其他人可能遇到的复杂情况,但未在副本中讨论。
最后虽然方法是一样的。我不得不放弃 ngIf 并使用对模板的引用。 (见下文)。
尽管我注意到,按照建议副本中的答案对我不起作用:我必须将上下文变量作为键值对 context:{cell:cell} 而不仅仅是 context:cell 传递。
【问题讨论】:
标签: angular