javascript - 如何在 Angular Material Autocomplete 中替换 setTimeout()
问题描述
我在打开 Material Autocomplete 后尝试使用滚动来滚动到使用_setScrollTop
. 当我使用它时它工作正常,setTimeout
但没有它什么都不会发生。有没有办法避免使用超时?
这是一个活生生的例子。
我正在使用@ViewChild
自动完成功能:
@ViewChild('auto') testAuto: MatAutocomplete;
autoOpened()
然后在 Autocomplete 上调用函数(opened)
<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;
}
}
推荐阅读
- javascript - 如何在 javascript 中获取 XMLHttpRequest 的源端口并将其放入变量中?
- javascript - 无法让“setTimeout”延迟随机时间
- haskell - 如何推断 Scott 编码的 List 构造函数的类型?
- arrays - React:按下按钮后如何显示映射数组?
- ruby-on-rails - 如何在不同的页面上做出不同的能力
- python - Pygame动画居中问题
- c++ - Boost 管道的用途是什么以及为什么它很重要?
- vb.net - 如何设置activex名称?
- python - 从 CSV 文件中提取信息
- r - 绘制文件大小 geom_rect 的纵横比变化