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();
}