【问题标题】:Angular mat-autocomplete not showing options角垫自动完成不显示选项
【发布时间】:2019-05-19 20:45:45
【问题描述】:

我正在使用自动完成功能,因此用户可以选择一个地址(或搜索并选择它)。

在同一页面上,用户可以添加地址。他们添加地址后,我想将地址添加到 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 时,我确实看到了多个过滤器。

如何解决这个问题?

【问题讨论】:

  • 请添加 stackblitz 示例

标签: angular rxjs angular-material


【解决方案1】:

我通过删除右侧的第二个 mat-autocomplete 解决了这个问题。我还没有正确配置第二个,它似乎干扰了第一个(没有给出错误)。

如果你有同样的问题: 删除所有其他 mat-autocomplete,检查您的(损坏的)mat-autocomplete 是否有效,然后慢慢重新添加其他的。

【讨论】:

  • 哦,天哪。从今天早上开始,我一直在尝试调试它。救生员:)
  • 我需要两个都用
【解决方案2】:

在 style.scss 中添加这个。它应该可以解决问题。

.cdk-overlay-container, .cdk-overlay-pane { z-index: 9999 !important; }

【讨论】:

  • 谢谢@Arun Kumar 它拯救了我的一天
  • @Roster 我很高兴它有帮助。
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多