【问题标题】:How to pass data from child to parent when button clicked in parent在父级中单击按钮时如何将数据从子级传递给父级
【发布时间】:2021-05-09 01:18:36
【问题描述】:

我是角度方面的新手。我有一个大表格。我想让它模块化。这就是为什么我创建了多个较小的子组件以及我在主父组件中使用的所有组件选择器。我在parent 组件中有save 按钮,单击保存按钮时,应发送表单(子组件)的所有数据以供api调用。

我知道如何使用@Output 将数据从子组件发送到父组件,但我只知道,当我单击子组件中的某个按钮以将数据从子组件发送到父组件时, 但就我而言,我的子组件中没有任何按钮。那么有没有什么有效的方法来达到同样的效果呢?还是我不应该使用这种方法?或者任何人在 stackblitz 中有工作示例?

提前致谢!!!

【问题讨论】:

  • @Nicolas 我正在使用模板驱动表单
  • @Nicolas 是否有同样的工作示例?
  • 在您的应用程序中添加最少的复制然后它会更有助于理解和帮助您

标签: javascript angular typescript


【解决方案1】:

如果你作为@Input 传递一个对象(这是一个变量,它的值是一个对象-不是字符串或数字),你不必担心使用@Output 否则你需要做“某事”来获取值的孩子。简单的方法是在您的孩子中使用模板参考。所以你有,例如

<child-one #childOne ...></child-one>
<child-two #childTwo ...></child-two>
<child-three #childThree ...></child-three>
<button (click)="submit(childOne,childTwo,childThree)">submit</button>

submit(childOne:any,childTwo:any,childThree:any){
   //if, e.g. you has a variable in child-one, child-two and child-three called data you can use
   this.data={dataOne:childOne.data,dataTwo:childTwo.data,dataThree:childThree.data}
   //remember that you can "reach" all the variables public in your children 
   // as, childOne.name_of_variable
}

其他配置,给我们更多数据:)

【讨论】:

  • 在这个#childOne 中是@Input 的变量名?因为当我传递它时,在子组件中我得到了错误的数据,并且在单击按钮时我也得到了错误的数据。请帮忙
  • 两种不同的方法:#childOne 是一个模板引用,当你写 (click)="submit(childOne)" 时,在函数 submit 中你有变量 " childOne”子组件,您的组件的任何“公共变量”(并且在角度缺陷中所有变量和函数都是公共的)都可以“到达”。另一种方法是在输入中传递一个对象。在这个 stackblitz 中你有两个选择:stackblitz.com/edit/…
  • 你能检查一下你的聊天框吗?我急需你的帮助
猜你喜欢
  • 2018-10-01
  • 1970-01-01
  • 2017-08-03
  • 2020-09-22
  • 1970-01-01
  • 2017-11-07
  • 2018-03-09
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多