【问题标题】:How do you pass the ngFor template input variable to an ngTemplate via an ngIf?如何通过 ngIf 将 ngFor 模板输入变量传递给 ng 模板?
【发布时间】: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


【解决方案1】:

您可以使用 ngTemplateOutletContext 将数据发送到模板。 See This link

【讨论】:

  • 做到了,谢谢。我无法弄清楚如何将 ngTemplateOutletContext 添加到 ngIf,因此我添加了对每个单元格数据的模板引用,并调用它而不是使用 ngIf。所以不是这个&lt;ng-container *ngIf="cell.column === 'Entity' then photoTemplate else cellTemplate"&gt;&lt;/ng-container&gt; 我有这个&lt;ng-container *ngTemplateOutlet="cell.column.template; context:{cell:cell}"&gt;&lt;/ng-container&gt; 然后我在模板中捕获这个值&lt;ng-template #cellTemplate let-value="cell"&gt;
猜你喜欢
  • 2018-06-20
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 2016-09-26
  • 1970-01-01
  • 2012-04-05
  • 2013-11-04
  • 2019-04-03
相关资源
最近更新 更多