2017-08-29 66 views
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]不是選項。

回答

0

重新啓動Web服務器最終解決了問題,並且一切正常。