更新子状态(例如,重置表单)

时间:2019-07-09 12:14:46

标签: angular

在Angular中重置孩子的组件状态的最佳方法是什么?例如。重置孩子的表格。

我已经开发出5种可能的解决方案:

  1. Child侦听它通过@Input接收的原始值(布尔值)。使用setTimeout,否则更改太快,子进程将无法注册。参见StackBlitz中的方案3。
  2. 将可观察对象传递给子组件。场景4在StackBlitz上
  3. 使用复杂的数据结构(对象)。如果每次创建一个新对象,孩子都会认为它完全不同,因此能够正确触发它的重置表单功能。场景5在StackBlitz上
  4. ViewChild。场景6在StackBlitz上
  5. 在父级上创建formControl并将其传递给子级。场景7在StackBlitz上

https://stackblitz.com/github/laurensdewaele/parent-child-angular-react/tree/master/angular-example

2 个答案:

答案 0 :(得分:0)

  1. 如果不需要重复使用,最好的方法是不使用100500组件。在这种情况下,所有输入的1个组件(或NO组件。全部在app.component中)和按钮的组件都不好。

  2. 如果app.component有很多子组件,则为№3。

答案 1 :(得分:0)

第一个问题是,您真的需要子组件吗?当您省去麻烦时,不要担心模板会更大。另外,如有必要,您可以使用ng-template。

在上面的示例中,我至少错过了ngOnChanges选项。我认为最好的选择在这里描述得很好:How to emit an event from parent to child?