You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular中如何通过EventEmitter实现子组件向父组件传字符串值

解决方法

你必须在父组件模板中渲染子组件,并绑定子组件通过@Output()定义的自定义事件,才能完成事件关联和值传递,当前父组件模板为空无法实现需求,按以下步骤修改即可:

1. 修改父组件模板配置

替换父组件原先的空模板,引入子组件标签,通过Angular事件绑定语法监听子组件的message输出事件,绑定语法中$event代表子组件emit传递的载荷值:

@Component({
  selector: 'parent-component',
  template: `
    <!-- 引入子组件,绑定message输出事件 -->
    <child-component (message)="handleChildMessage($event)"></child-component>
  `,
  styleUrls: ['./parent.component.css']
})

2. 父组件类添加事件处理逻辑

在父组件类中新增事件处理方法,接收子组件传递的对象,拆解出两个字符串参数后传入你已有的printMessages函数,子组件触发emit时会自动执行该处理流程:

export class ParentComponent {
  constructor() { }

  // 新增:子组件事件处理方法
  handleChildMessage(payload: { string1: string, string2: string }) {
    // 拆解参数传入目标函数
    this.printMessages(payload.string1, payload.string2);
  }

  printMessages(string1: string, string2: string) { 
    console.log(string1, string2);
  }
}

可选规范优化

可以给子组件的EventEmitter添加泛型类型定义,提前约束传值格式,避免类型错误:

// 子组件中修改@Output定义
@Output() message = new EventEmitter<{ string1: string, string2: string }>();

修改完成后,点击子组件的「Send Strings」按钮,就会自动触发父组件方法,控制台会正确打印Hello World!。


内容的提问来源于stack exchange,提问作者gadget-man615

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:48:10