如何通过ngIf将ngFor模板输入变量传递给ngTemplate?

时间:2017-11-29 09:43:50

标签: angular

我正在尝试为某些单元格创建一个使用不同ng-template的表,具体取决于单元格中的某些数据。 (在这种情况下,如果单元格位于" Entity"列中,我想要一个显示照片和常规数据的模板。)

使用*ngIf我可以轻松切换表格中的ng-template。但是当我在切换模板中时,我不再知道如何访问来自周围ngFor循环的单元格数据。

模板输入变量称为" cell"。

我以为我可以使用celllet-value="cell"传递给新模板,但它不起作用。在模板内部,变量"值"未定义。我还检查了是否" cell"即使使用let-也不在我的范围内,但它也不是。

如何访问"单元格"我与ng-templates交换的各种*ngIf内的模板输入变量?

<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传递。

0 个答案:

没有答案