* ngIf为false时,组件不会被销毁

时间:2018-11-24 00:54:35

标签: angular angular-ng-if

我有一个包含以下子组件的组件:

<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中注意到了这一点:

enter image description here

因此,它检测到ngIf现在为假,但是对此没有做任何事情。如何使组件消失?

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

app-fullscreen子组件中,我发出一个值为“ false”的事件:

closeFullscreen(){
  this.fullscreenChange.emit("false");
}

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

closeFullscreen(event: any){
  this.displayFullscreen = event;
  this.cd.detectChanges();
}

如您所见,我什至尝试致电detectChanges(),但这无济于事。

1 个答案:

答案 0 :(得分:3)

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

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