0
My * ngIf指令可以將元素帶入DOM,但不會超出它。使用下面的代碼,我可以從父組件成功調用showGlobalDialog(),但hideGlobalDialog()似乎不起作用。在運行時忽略ngIF假值
子組件模板:
<div class="modal" *ngIf="isVisible === true">
<ng-content></ng-content>
</div>
子組件:
public show(): void {
this.isVisible = true;
}
public hide(): void {
this.isVisible = false;
}
父組件模板:
<app-mycomponent #globalDialog>
<div>
<button (click)="hideGlobalDialog()">Done</button>
</div>
</app-mycomponent>
父組件:
@ViewChild('globalDialog') globalDialog: MyComponent;
private showGlobalDialog() {
this.globalDialog.show();
}
public hideGlobalDialog() {
this.globalDialog.hide();
}
奇怪的是,在這兩個邊緣和Chrome的DOM瀏覽器中顯示該ngIf正確設置爲false:在showGlobalDialog()
:上hideGlobalDialog()
<!--bindings={
"ng-reflect-ng-if": "true"
}-->
:
<!--bindings={
"ng-reflect-ng-if": "false"
}-->
但是,即使使用上述綁定註釋,元素仍然可見。當'isVisible'爲false時,我不希望元素存在於DOM中,因此移動到[hidden]不是選項。