html - mat-autocomplete 下拉菜单显示在窗口的左上方 [Angular]
问题描述
现在我正在开发一个 Angular 项目,在这个项目中有一个包含 2 个mat-autocomplete
组件的页面,一个用于选择国家,另一个用于选择州。状态一可以正常工作,一切都停留在预期的地方,如下所示:
检查元素会显示有意义的属性。对于div
类名cdk-overlay-pane
(图中突出显示),width
is350px
和top
asleft
将动态变化,使其始终显示在相关input
元素的正上方或下方。
这是相关的 HTML 代码:
<div class="p-10" fxFlex.gt-md="100" fxFlex.gt-xs="100" fxFlex="100" [hidden]="!showStateDropdown">
<div class="spec-form-field drop-down" matAutocompleteOrigin #stateOrigin="matAutocompleteOrigin">
<mat-form-field>
<input type="text" #stateInput [formControl]="form.controls['state']" placeholder="{{ 'account_section.state' | translate }}" matInput [matAutocomplete]="state" (keyup)="isSelectedState = false; _filterSearch('state');" (blur)="removeUnusableValue();" (focus)="_filterSearch('state');"
[matAutocompleteConnectedTo]="stateOrigin">
<i class="material-icons">arrow_drop_down</i>
</mat-form-field>
<mat-autocomplete #state="matAutocomplete" (optionSelected)="isSelectedState = true;" (blur)="updateAccountData()">
<mat-option *ngFor="let state of states" [value]="state.iso">
{{ state.name }}
</mat-option>
</mat-autocomplete>
</div>
</div>
然而,当谈到mat-autocomplete
for 国家时,事情变得很奇怪。此下拉菜单将始终显示在窗口(浏览器)的左上角。
当我检查元素时width
,top
和left
的属性cdk-overlay-pane
总是设置为0px
.
但是,我无法找到国家和州之间的实际区别,除了在国家/地区中说“国家”的所有内容都替换为“国家”。这是HTML代码:
<div class="p-10" fxFlex.gt-md="100" fxFlex.gt-xs="100" fxFlex="100">
<div class="spec-form-field drop-down" matAutocompleteOrigin #countryOrigin="matAutocompleteOrigin">
<mat-form-field>
<input type="text" #countryInput [formControl]="form.controls['country']" placeholder="{{ 'account_section.country' | translate }}" matInput [matAutocomplete]="country" (keyup)="checkKeycode($event.keyCode,'country');" (blur)="removeUnusableValue();" (focus)="_filterSearch('country');"
[matAutocompleteConnectedTo]="countryOrigin">
<i class="material-icons">arrow_drop_down</i>
</mat-form-field>
<mat-autocomplete #country="matAutocomplete" (optionSelected)="changeCountry()" (blur)="updateAccountData()">
<mat-option *ngFor="let country of countries" [value]="country.iso">
{{ country.name }}
</mat-option>
</mat-autocomplete>
</div>
</div>
老实说,我不知道为什么这个国家不能正常工作。一切似乎都很好,但最终结果却并非如此。
这是此项目中使用的组件和模块的版本号,以防有人想查看。
任何帮助表示赞赏。
解决方案
在完成帖子后,我只是仔细检查了 HTML 文件,并在 HTML#countryInput
文件的底部发现了一个相同的不同组件。看起来修改该文件的人忘记将其与原始文件区分开来。我将把这个问题作为参考。
推荐阅读
- google-drive-api - 我需要共享驱动器 API 详细信息才能访问驱动器使用百分比
- angular - 如何在 Angular 8 上有条件地加载两个子组件
- c# - 旋转对象捕捉到一个不以恒定速度移动的点
- python - 两个字节数组的交集
- installation - 是否可以为自制软件做一个预发布的公式?
- r - 一个嵌套的“for”循环,返回每月的每一天
- javascript - useState Hook 不会传递给其他函数
- html - 如何将物品卡排成一行 3
- pyspark - 使用 Synapse Analytics 将数据帧写入 SQL 专用数据库
- javascript - 如何使用 htlm、js 和 nodejs 在另一个页面中显示画布活动?