Angular 事件触发传值问题

拾光过客
  • 609

我提的问题是一个“中间人”模式传递数据,即子组件A发射数据,父组件接收数据,再通过绑定将数据传给子组件B。

app.compent主组件中的 (buy) = "buyHandler($event)" 绑定操作,需要子组件中的按钮点击事件来触发吗? 主组件、子组件中的 $event 参数是什么关系呢?

其中,子组件如果去掉参数 $event ,也不会影响程序的正常运行,而主组件中的 $event 参数是必须的。

子组件如下:
图片描述

主组件如下:
图片描述

回复
阅读 5.1k
2 个回答

父子组件的event都不是必须的,看场景。

父组件的event参数,是接收子组件传过来的参数,你子组件要是不发射(emit)参数,那么父组件的这个event也不是必须的,这种情况也是常见的,就是父组件只需要知道子组件已经触发某种行为,但是不需要子组件去处理相应的业务逻辑,交由父组件去处理就好了,这种子组件也就叫做所谓的傻瓜组件,就是单纯做页面渲染,不处理过多逻辑,但是复用性高,这和React当中的木偶组件一个作用。

子组件的event参数,是代表你点击事件的event,就是普通DOM事件的event,没什么好说的。

注意,是$event,不是event,其实参数什么名字都可以,为什么加个$呢, 一般我们默认$开头的变量就是流的意思,而emit就是NodeJS的流发射,所以你懂得,不要被这个event误导了,父组件的此event非子组件的彼event呢。

需要子组件绑定事件来触发的 其中父组件的$event是子组件emit传出的值 子组件的$event是点击的事件
具体可以查阅对应的@Output()文档

宣传栏