[英]Angular mat-autocomplete not showing options
我正在使用自动完成功能,因此用户可以选择一个地址(或搜索它并选择它)。
在同一页面上,用户可以添加地址。 添加地址后,我想将地址添加到 mat-autocomplete 中。
我的问题目前是 mat-autocomplete 没有显示任何选项。 为了进行故障排除,我设置了一个 div,它使用 *ngFor 来显示地址并且可以工作和更新。
// 组件(省略了一些代码)
filteredAddresses_pickup;
constructor(public translate: TranslateService, private addressService:
AddressService, private route: ActivatedRoute) { }
ngOnInit() {
this.addresses = this.route.snapshot.data['addresses'];
this.filteredAddresses_pickup = Observable.create((observer: Observer<Address[]>) => {
observer.next(this.addresses);
this.addressService.addressesChanged.subscribe(
(addresses: Address[]) => {
observer.next(addresses);
this.addresses = addresses;
console.log(this.addresses);
});
this.pickupaddress.valueChanges.subscribe(value_entered => {
console.log(value_entered);
console.log(this._filterAddresses(value_entered));
observer.next(this._filterAddresses(value_entered));
});
});
}
组件 HTML:
<mat-form-field class="full-width">
<input matInput placeholder="{{ 'mainapp.shipment.pickupaddress' | translate }}"
attr.aria-label="{{ 'mainapp.shipment.pickupaddress' | translate }}" [matAutocomplete]="auto"
[formControl]="pickupaddress"
>
<ng-template *ngIf="filteredAddresses_pickup | async; else loadingtwee">
<mat-autocomplete #auto="matAutocomplete" autoActiveFirstOption [displayWith]="displayAddress"><!---->
<mat-option *ngFor="let pickup of filteredAddresses_pickup | async" [value]="pickup">
<span>{{pickup.name}}, {{pickup.postalcode}}, {{pickup.country}}</span>
</mat-option>
</mat-autocomplete>
</ng-template>
</mat-form-field>
<div *ngIf="filteredAddresses_pickup | async; else loading">
<div *ngFor="let a of filteredAddresses_pickup | async">
<span>{{a.name}}, {{a.postalcode}}, {{a.country}}</span>
</div>
</div>
<ng-template #loading>
Textdiv...
</ng-template>
<ng-template #loadingtwee>
Dropdown...
</ng-template>
我没有看到 mat-options(它仅用作输入文本字段),但我确实看到多个跨度在我在输入字段中输入内容或 addressChanged 被触发时进行过滤。
如何解决这个问题?
我通过删除右侧的第二个 mat-autocomplete 解决了这个问题。 我还没有正确配置第二个,它似乎干扰了第一个(没有给出错误)。
如果您有同样的问题:删除所有其他 mat-autocomplete,检查您的(损坏的)mat-autocomplete 是否有效,然后慢慢重新添加其他的。
在 style.scss 中添加它。 它应该解决这个问题。
.cdk-overlay-container, .cdk-overlay-pane { z-index: 9999 !important; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.