在Angular中,可以通过使用@Output
装饰器和EventEmitter
类来触发事件来通知子组件。以下是一个示例:
首先,创建一个父组件,命名为ParentComponent
,它包含一个按钮和一个子组件:
import { Component } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
`,
})
export class ParentComponent {
childData: string;
notifyChild() {
this.childData = '从父组件发送的数据';
}
}
在父组件中,我们使用(click)
事件绑定来触发notifyChild()
方法,并将childData
设置为要传递给子组件的值。
接下来,创建一个子组件,命名为ChildComponent
,它包含一个输入属性和一个事件:
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
template: `
{{ data }}
`,
})
export class ChildComponent {
@Input() data: string;
@Output() dataChange: EventEmitter = new EventEmitter();
ngOnChanges() {
this.dataChange.emit(this.data);
}
}
在子组件中,我们使用@Input
装饰器来接收从父组件传递的值,并使用@Output
装饰器和EventEmitter
类来定义一个名为dataChange
的事件。在ngOnChanges()
生命周期钩子方法中,我们通过调用emit()
方法来触发dataChange
事件,并将data
作为参数传递。
最后,在父组件的模板中,我们可以通过监听dataChange
事件来接收子组件中传递的数据:
@Component({
selector: 'app-parent',
template: `
`,
})
export class ParentComponent {
childData: string;
notifyChild() {
this.childData = '从父组件发送的数据';
}
onChildDataChange(data: string) {
console.log('子组件传递的数据:', data);
}
}
在上述代码中,我们在子组件标签中使用(dataChange)="onChildDataChange($event)"
来监听dataChange
事件,并在父组件中定义一个名为onChildDataChange()
的方法来接收子组件传递的数据。在这个方法中,我们可以对接收到的数据进行任何处理。
这样,当点击按钮时,父组件会将一个字符串数据发送给子组件,并且子组件会在数据发生变化时触发dataChange
事件,父组件则会监听该事件并调用对应的方法来处理传递的数据。
下一篇:Angular嵌套命名出口路由