Я использую автозаполнение, чтобы пользователи могли выбирать адрес (или искать его и выбирать его).
На той же странице пользователи могут добавлять адреса.После того, как они добавили адрес, я хочу добавить адрес в 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.
Как это исправить?