【问题标题】:Angular 5 dynamically add & delete a component instanceAngular 5 动态添加和删除组件实例
【发布时间】:2018-04-28 03:56:59
【问题描述】:

我正在尝试创建一个看起来像电子表格的表格,每个 td 中都有可编辑的输入。我正在使用 Angular 的 ComponentFactoryResolver 解释 here,在用户单击添加按钮时向表中添加一行。

添加行后,我使用EventEmitter 在最后一列值更改时发出该行的所有数据。

我尝试在this StackBlitz 上重新实现相同的功能。

我遇到以下问题:

  1. 我无法从新添加的组件中发出数据。 (检查控制台)
  2. 添加新行后,第一行(非动态)也会停止向我提供发出的数据。
  3. 如果用户不需要它,我不知道如何删除它,因为我没有对它的引用。

【问题讨论】:

  • 不如想出 ComponentFactoryResolver 以外的其他解决方案?
  • 你有什么建议吗?我花了很多时间来找到这个解决方案。如果您能提出更好的解决方案,我会尝试实施。
  • 让我创建一个堆栈闪电战。
  • 这样的事情怎么样? stackblitz.com/edit/angular-vdyhib

标签: javascript angular angular5


【解决方案1】:

这就是我的建议。您可以在父(表)组件中创建行对象列表并使用 *ngFor 循环它。

<app-row 
   *ngFor="let row of rowList" 
   [row]="row" 
   (entryUpdate)="onEntryUpdated($event)">
</app-row>

请看this

【讨论】:

  • 非常感谢,您能否推荐一些有关删除特定行的内容?
  • Stackblitz 已更新。请看一下,先生,如果这是您正在寻找的答案,请将其标记为已接受。也许您可以想出一个更好的解决方案来从数组中删除元素。
  • 谢谢,我有正确的工作道路。非常感谢您的帮助。
  • 很高兴我能提供帮助。 :)
  • 这里是固定的 stackblitz stackblitz.com/edit/angular-rb3im2 我所做的是,添加属性选择器而不是普通选择器。您可以在stackoverflow.com/questions/34588933/… 上阅读更多相关信息
猜你喜欢
  • 2017-12-09
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-09-15
  • 2017-05-18
相关资源
最近更新 更多