Estoy tratando de usar el desplazamiento después de abrir Material Autocompletar para desplazarme a una opción específica usando _setScrollTop . Funciona bien cuando uso setTimeout pero sin él no sucede nada. ¿Hay alguna manera de evitar el uso del tiempo de espera?
Aquí hay un ejemplo en vivo.
Estoy usando @ViewChild para autocompletar:
@ViewChild('auto') testAuto: MatAutocomplete;
Y luego llamar a la función autoOpened() en Autocompletar (opened)
<mat-autocomplete autoActiveFirstOption #auto="matAutocomplete" (opened)="autoOpened()">
autoOpened() { // Not working this.testAuto._setScrollTop(30); // Working // setTimeout(() => { // this.testAuto._setScrollTop(30); // }) }No creo que haya una manera de evitar setTimeout en este caso. Porque panel autocompletar aún no existe en ese momento. Ver fuentes de autocompletado angular :
_setScrollTop(scrollTop: number): void { if (this.panel) { this.panel.nativeElement.scrollTop = scrollTop; } }