*ngIf 为 false 时组件不会被销毁
Component doesn't get destroyed when *ngIf is false
我有一个包含以下子组件的组件:
<app-fullscreen *ngIf="displayFullscreen" [images]="images" [selected]="selected"
(fullscreenChange)="closeFullscreen($event)"></app-fullscreen>
当有人点击我的其中一张图片时,将调用此方法:
openFullscreen(images: any, img: any) {
this.images = images;
this.selected = img;
this.displayFullscreen = true;
}
现在显示组件。一旦 displayFullscreen
再次设置为 false,app-fullscreen
组件就不会被销毁。我在 DOM:
中注意到了这一点
所以它检测到 ngIf
现在是假的,但它没有做任何事情。如何让组件消失?
编辑:有关我如何将 displayFullscreen
设置为 false 的信息。
在 app-fullscreen
子组件中,我发出一个值为 "false" 的事件:
closeFullscreen(){
this.fullscreenChange.emit("false");
}
事件发出时,父组件调用此方法:
closeFullscreen(event: any){
this.displayFullscreen = event;
this.cd.detectChanges();
}
如您所见,我什至尝试致电 detectChanges()
,但没有帮助。
您发出字符串 "false"
。字符串 "false"
是真实的。所以 ngIf
仍然显示组件。
对布尔值使用布尔值,而不是字符串。
我有一个包含以下子组件的组件:
<app-fullscreen *ngIf="displayFullscreen" [images]="images" [selected]="selected"
(fullscreenChange)="closeFullscreen($event)"></app-fullscreen>
当有人点击我的其中一张图片时,将调用此方法:
openFullscreen(images: any, img: any) {
this.images = images;
this.selected = img;
this.displayFullscreen = true;
}
现在显示组件。一旦 displayFullscreen
再次设置为 false,app-fullscreen
组件就不会被销毁。我在 DOM:
所以它检测到 ngIf
现在是假的,但它没有做任何事情。如何让组件消失?
编辑:有关我如何将 displayFullscreen
设置为 false 的信息。
在 app-fullscreen
子组件中,我发出一个值为 "false" 的事件:
closeFullscreen(){
this.fullscreenChange.emit("false");
}
事件发出时,父组件调用此方法:
closeFullscreen(event: any){
this.displayFullscreen = event;
this.cd.detectChanges();
}
如您所见,我什至尝试致电 detectChanges()
,但没有帮助。
您发出字符串 "false"
。字符串 "false"
是真实的。所以 ngIf
仍然显示组件。
对布尔值使用布尔值,而不是字符串。