Угловой материал мат-автозаполнение вопросов
У меня есть поле ввода с мат-автозаполнение. есть кнопка поиска, которую я нажимаю, чтобы получить соответствующие записи для заполнения предложений. Хотя в целом это работает, но поведение немного раздражает. Вот что происходит:
- Я набираю ra и нажимаю ввод.
- Через некоторое время индикатор прогресса возвращается, и я не вижу других визуальных изменений.
если я нажму или стрелка вправо и т. д. я не вижу предложений
если я удаляю последний символ, то он показывает предложения.
код пользовательского интерфейса выглядит так:
<div fxLayout="row" fxLayoutAlign="start center">
<div>
<form >
<mat-form-field >
<input type="text" placeholder="Opportunity name" aria-label="Number" matInput [formControl]="myControl" [matAutocomplete]="auto">
<mat-autocomplete #auto="matAutocomplete" [displayWith]="displayFn">
<mat-option *ngFor="let option of filteredOptions | async" [value]="option">
{{ option.name }}
</mat-option>
</mat-autocomplete>
</mat-form-field>
</form>
</div>
<div> <mat-icon (click)="refreshOptyList()">search</mat-icon>
</div>
</div>
функция refreshOptyList выглядит следующим образом:
refreshOptyList(){
this.diaRef = this.dialog.open(MessageDialogComponent, {
width: '250px',
disableClose: true,
data: { "message": "Please wait...", "showProgress": true }
});
this.revSvc.getOptyList(this.keyword).then(
(val:any) => {
this.diaRef.close()
this.optyArr = JSON.parse(val._body).items;
for(let op of this.optyArr){
this.options.push(new Opty(op.Name, op.OptyNumber))
}
}
)
}
1 ответ
В настоящее время я работаю с тем же материалом, и я заметил здесь что-то другое.
К сожалению, я не могу обещать, если это сработает, потому что я сам новичок в Материале, но, надеюсь, это поможет вам:
Ваша функция запроса должна использоваться в вашем варианте. Я не знаю, будет ли это работать
*ngFor="let option of refreshOptyList()
Еще можно попробовать вернуть ответ $http в функцию запроса.
return $http( { url: '/foo/bar', method: 'POST', data: JSON.stringify({}) })
.then(response => {
return response.data;
})
.catch(err => {
return []; // { error: { source: "foo/bar/post" }, err: err };
});
Надеюсь это поможет:)