【发布时间】:2020-10-27 15:48:28
【问题描述】:
我在我的 Angular 应用程序中使用 NgxAutocomPlace 模块,以下模块通过生成 .pac-container 与谷歌自动完成 API 一起工作,其中显示自动完成结果。
问题在于,在移动设备上,下拉菜单位于输入的上方而不是下方,最终用户无法使用它,如下所示:
这是我的代码的样子:
<div class="container-indirizzo mb-3">
<label>Indirizzo di consegna</label>
<div class="inside-indirizzo">
<div class="indirizzo">
<input
*ngIf="addressOptions !== null"
type="text"
class="form-control"
required
placeholder="es. Via Disraeli"
formControlName="indirizzo"
ngxAutocomPlace
[options]="addressOptions"
(selectedPlace)="addressChange($event)"
/>
</div>
<div class="civico" *ngIf="isCivico">
<input type="text" class="form-control" formControlName="nciv" placeholder="N°" autofocus />
</div>
</div>
</div>
有没有办法在<input> 下设置下拉菜单的位置?
编辑 1:
当虚拟键盘启动时,问题发生在滚动或移动设备上,因此问题是触发时设置为 pac-container 的位置
编辑 2:
我正在尝试在地址更改和滚动时执行类似的操作,但即使这样也没有任何效果:
const top = this.indirizzo.nativeElement.getBoundingClientRect().top ;
const pacContainer = document.querySelector('.pac-container') as HTMLElement;
if (pacContainer) {
console.log(window.scrollY + top + 60);
pacContainer.style.top = window.scrollY + top + 60;
}
其中 indirizzo 是放置输入的 Div。
编辑 3:
.pac-container 是在<body> 下生成的,所以我认为通过强制它在<div class="indirizzo"> 下呈现将解决问题...
编辑 4:
已解决,将 top 设置为 pac-container 到从屏幕顶部到输入底部的 X 像素的固定位置,但仍在寻找更好的解决方案。
(所以从我的输入的顶部 0 到末尾有 465px 我只是设置了.pac-container top: 465px)但是在某些屏幕上,高度可能会更低(一些移动设备 450 其他 460 其他 470)下拉菜单仍然绘制得很糟糕..
【问题讨论】:
-
通常,z-index 应该可以解决您的问题。你能帮助我们使用 CSS 和 Google API 导入的工作代码笔或 sn-p 吗?
-
@DhruviMakvana 我无法通过 stackblitz 制作一个工作示例,实际上没有自定义 CSS,我只是使用 ng-bootstrap.github.io 进行样式设置和这个库用于自动完成 npmjs.com/package/ngx-autocom-place
-
@DhruviMakvana 尝试使用 z-index 没有效果..
标签: css angular google-places-api