эмиттер событий работает один раз, но не второй раз Angular 8

У меня есть эта переменная, которая контролирует, отображается ли диалоговое окно или нет, оно работает в первый раз, но не во второй раз, испускает excutes, но функция приема больше не вызывается.

родительский класс:

  isLogin :boolean ;

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

родительский html:

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

в дочернем классе: у меня есть функция, которая при инициированных вызовах испускает и испускает, действительно вызывается, просто не запускает функцию для родителя во второй раз

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

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

Я думаю, может быть, это связано с ngIf, но не уверен, что здесь не так?


person AnaCS    schedule 25.07.2019    source источник


Ответы (2)


Это может быть связано с тем, что вы испускаете истинное значение, но в родительском шаблоне вы проверяете !true, что является ложным.

В соответствии с вашей текущей логикой вы должны либо выдать ложное значение, либо изменить условие на *ngIf="isLogin" в родительском шаблоне.

person Nicholas K    schedule 25.07.2019

Попробуйте использовать hidden вместо ngIf, потому что ngIf удаляет компонент из DOM, а hidden просто скрывает его.

<login-dialog   [hidden]="isLogin"  name="{{name}}"...></login-dialog>
person ilyas shabi    schedule 25.07.2019