javascript - 用新元素刷新下拉列表后,它会以垂直滚动方式显示
问题描述
我有一个最初有一个元素的下拉列表。
<select (click)="loadStuff()">
<option value="DEFAULT_ELEMENT">DEFAULT</option>
<option *ngFor="let e of elements" [ngValue]="e">{{ e }}</option>
</select>
下拉列表有一个click
事件,如果尚未加载,则加载下拉元素:
public elements = [];
loadStuff() {
if (!this.elements.length) {
setTimeout(() => {
for (let i=0; i < 10; i++) {
this.elements.push('element ' + i)
}
}, 1000)
}
}
现在我的问题是:当我单击下拉菜单本身时,它最初具有预期的一个元素:
但是在加载元素后(当下拉菜单仍然打开时)它会为元素添加一个滚动条:
然后,我需要单击并返回以使列表正确显示:
这是一个展示问题的工作 Angular 版本:https ://stackblitz.com/edit/angular-ivy-pgyd1q
使用同样的行为:http jQuery
: //jsfiddle.net/6j7a3sxn/
我怎样才能防止这种情况发生?
解决方案
只需不要在 HTMLSelectElement 单击上获取数据...在 ngOnInit 或解析器中执行。或者不要使用本机选择控件:)
推荐阅读
- database - 在 wordPress 中自动动态创建页面
- java - Java Money 奇数除法和四舍五入不损失/获得美分
- server - Indy IdTCPServer 问题
- arrays - purescript:混合效果和数组上下文
- javascript - 使用数组的所有名称和计数构建 Javascript 对象
- javascript - Graphql的返回查询为空时如何在Nuxtjs中进行重定向
- python - 无法正确实现 wiki 搜索。按查询搜索结果不起作用
- python - Python War纸牌游戏运行正常但无限
- git - 为什么 git pack 协议只协商包文件协商期间要发送的提交?
- linux - 如何在后台运行 Webpack 服务命令?