我正在使用ng2-modal在Angular 2中創建一個模態對話框。我無法獲取一個有條件的元素(#myModalScrollPanel)。如何在Angular 2中獲得具有模態對話條件的元素?
模板(modal.html):
<modal #myModal title="{{title}}"
cancelButtonLabel="Close"
submitButtonLabel="Ok"
modalClass="@modal-md"
[hideCloseButton]="false"
[closeOnEscape]="false"
[closeOnOutsideClick]="false"
>
<modal-header></modal-header>
<modal-content>
<div class="row">
<div *ngIf="logOutput" class="col-md-12">
<div id="myModalScrollPanel" #myModalScrollPanel class="panel-body fixed-panel">
<p *ngFor="let entry of logOutput.entries">{{entry.log}}</p>
</div>
</div>
</div>
</modal-content>
<modal-footer></modal-footer>
</modal>
在我的部分,我得到查看兒童(modal.component.ts):
@ViewChild('myModal') myModalModal;
@ViewChild('myModalScrollPanel') myModalScrollPanel;
一個用戶後,點擊一個按鈕,我顯示模式並從服務器獲取日誌文本,我在更新logOutput(modal.component.ts)後調用updateScrollPosition():
updateScrollPosition() {
console.log("modal:");
console.log(this.myModalModal);
console.log("log scroll panel:");
console.log(this.myModalScrollPanel);
if(this.myModalScrollPanel){
console.log("Scrolling the panel down");
this.myModalScrollPanel.nativeElement.scrollTop = this.myModalScrollPanel.nativeElement.scrollHeight;
} else {
console.log("No log scroll panel.");
}
}
控制檯示出了用於「模態」和「未定義」日誌滾動面板有效的對象。 我也嘗試從ngAfterViewInit()調用該方法,但它只在父組件被加載時被調用,而不是實際的模態被顯示,因此if語句導致false並且元素不存在。如果我刪除/移動if語句,以便元素存在,則可以訪問該對象,但是我所做的更改不會產生任何效果,儘管這可能是一個完全不同的問題(最有可能用於更改檢測)。
最後,我只想滾動到面板的底部。像這樣的東西(在瀏覽器控制檯中工作):
var scrollPanel = document.getElementById('myModalScrollPanel');
scrollPanel.scrollTop = scrollPanel.scrollHeight;
在此先感謝!