问题是因为使用 ngIf 导致组件在 DOM 中被移除,当使用 EventEmitter 触发事件时这个事件无法响应。可以通过把 ngIf 改为 [hidden] 来解决这个问题。
代码示例:
// 组件中 import { Component, EventEmitter, Output } from '@angular/core';
@Component({
selector: 'app-test',
template:
})
export class TestComponent {
show = true;
@Output() messageEvent = new EventEmitter
sendMessage() { this.messageEvent.emit('Message from TestComponent to AppComponent'); } }
// 父组件中 import { Component } from '@angular/core';
@Component({
selector: 'app-root',
template:
})
export class AppComponent {
receivedMessage: string;Received Message: {{receivedMessage}}
receiveMessage($event) { this.receivedMessage = $event; } }