事件发射器工作一次但不工作第二次 Angular 8

event emitter works one time but not a second time Angular 8

我有这个变量来控制对话框是否显示,它第一次工作,但第二次不工作,发出执行但不再调用接收函数。

parent class:

  isLogin :boolean ;

  constructor(...){
    this.isLogin = false;
}
  receiveNotification(notification: boolean): void {
    this.isLogin = notification;
  }

parent html:

<login-dialog   *ngIf="!isLogin"  name="{{name}}" (notify)="receiveNotification($event)"></login-dialog>

在childclass中: 我有一个函数,当触发调用 emit 和 emit 确实被调用时,不会第二次触发 parent 上的函数

@Output() notify = new EventEmitter<any>();

  exampleFunction(){
 this.notify.emit(true);
}

我想这可能与 ngIf 有关但不确定,这里有什么问题?

这可能是因为您发出 一个真值,但在父模板上您正在检查 !true 这是假的。

根据您当前的逻辑,您应该发出假值或在父模板中将条件更改为 *ngIf="isLogin"

尝试使用 hidden 而不是 ngIf,因为 ngIf 从 DOM 中删除组件但 hidden 只是隐藏它。

<login-dialog   [hidden]="isLogin"  name="{{name}}"...></login-dialog>