事件发射器工作一次但不工作第二次 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>
我有这个变量来控制对话框是否显示,它第一次工作,但第二次不工作,发出执行但不再调用接收函数。
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>