我试图在打开材料自动完成后使用滚动滚动到使用_setScrollTop
的特定选项。当我使用setTimeout
时,它工作得很好,但没有它,什么也不会发生。有没有办法避免使用超时?
下面是一个实例。
我使用@ViewChild
获得自动补全:
@ViewChild('auto') testAuto: MatAutocomplete;
然后在自动补全(opened)
上调用autoOpened()
函数
<mat-autocomplete autoActiveFirstOption #auto="matAutocomplete" (opened)="autoOpened()">
autoOpened() {
// Not working
this.testAuto._setScrollTop(30);
// Working
// setTimeout(() => {
// this.testAuto._setScrollTop(30);
// })
}
我认为在这种情况下没有办法避免setTimeout
。因为自动补全panel
在那时还不存在。参见Angular自动完成源代码:
_setScrollTop(scrollTop: number): void {
if (this.panel) {
this.panel.nativeElement.scrollTop = scrollTop;
}
}