@Output装饰器不仅适用于点击事件,它可以在组件之间传递任何类型的数据。以下是一个使用@Output装饰器传递字符串数据的示例:
在父组件中:
import { Component, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-parent',
template: `
{{message}}
`,
styleUrls: ['./parent.component.css']
})
export class ParentComponent {
message: string;
@Output() messageEvent = new EventEmitter();
sendMessage() {
this.messageEvent.emit('Hello from parent');
}
receiveMessage($event) {
this.message = $event;
}
}
在子组件中:
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
selector: 'app-child',
template: `
`,
styleUrls: ['./child.component.css']
})
export class ChildComponent {
@Output() messageEvent = new EventEmitter();
sendMessage() {
this.messageEvent.emit('Hello from child');
}
}
在这个例子中,当子组件中的按钮被点击时,它将发送一个字符串数据到父组件。父组件接收到该数据后,将它保存在组件的message属性中,并在页面中显示。