Angular 组件没有';如果*ngIf为false,则不会被销毁

Angular 组件没有';如果*ngIf为false,则不会被销毁,angular,angular-ng-if,Angular,Angular Ng If,我有一个具有以下子组件的组件: <app-fullscreen *ngIf="displayFullscreen" [images]="images" [selected]="selected" (fullscreenChange)="closeFullscreen($event)"></app-fullscreen> 现在将显示该组件。一旦displayFullscreen再次设置为false,则app fullscreen组件不会被销毁。我在DOM中注意到: 因

我有一个具有以下子组件的组件:

<app-fullscreen *ngIf="displayFullscreen" [images]="images" [selected]="selected" 
(fullscreenChange)="closeFullscreen($event)"></app-fullscreen>
现在将显示该组件。一旦
displayFullscreen
再次设置为false,则
app fullscreen
组件不会被销毁。我在DOM中注意到:

因此,它检测到
ngIf
现在为false,但它对此不做任何处理。如何使组件消失

编辑:有关如何将
displayFullscreen
设置为false的信息

应用程序全屏
子组件中,我发出一个值为“false”的事件:

发出事件时,父组件调用此方法:

closeFullscreen(event: any){
  this.displayFullscreen = event;
  this.cd.detectChanges();
}
如您所见,我甚至尝试调用
detectChanges()
,但没有任何帮助。

您发出字符串
“false”
。字符串
“false”
是真实的。因此
ngIf
仍然显示组件

对布尔值使用布尔值,而不是字符串。

您将发出字符串
“false”
。字符串
“false”
是真实的。因此
ngIf
仍然显示组件


对布尔值使用布尔值,而不是字符串。

发布相关代码。其中有一个bug。您应该添加代码和解释,说明displayFullScreen设置为false的位置。这是帮助您完成更改检测周期的关键信息involved@ivissani我已经添加了您请求的代码。如果你需要更多,请告诉我。谢谢。把相关代码贴出来。其中有一个bug。您应该添加代码和解释,说明displayFullScreen设置为false的位置。这是帮助您完成更改检测周期的关键信息involved@ivissani我已经添加了您请求的代码。如果你需要更多,请告诉我。谢谢。哦,老兄,我刚开始试着用布尔值,但它说需要字符串或符号。原来我是从
events
导入了
EventEmitter
,而不是
@angular/core
,然后我就不想在更正后再次尝试使用布尔值了。无论如何,非常感谢。哦,老兄,我刚开始试着用布尔值,但它说需要字符串或符号。原来我是从
events
导入了
EventEmitter
,而不是
@angular/core
,然后我就不想在更正后再次尝试使用布尔值了。无论如何,非常感谢。
closeFullscreen(){
  this.fullscreenChange.emit("false");
}
closeFullscreen(event: any){
  this.displayFullscreen = event;
  this.cd.detectChanges();
}