В настоящее время я работаю с Angular -QueryBuilder и обновляю шаблоны для с ng-container
с angular -материалом .
<!-- Override input component for 'category' type -->
<ng-container *queryInput="let rule; let field=field; let options=options; type: 'category'">
<mat-form-field class="categoryValue" floatLabel="never">
<mat-select [(ngModel)]="rule.value" [placeholder]="field.name">
<mat-option *ngFor="let opt of options" [value]="opt.value">
{{ opt.name }}
</mat-option>
</mat-select>
</mat-form-field>
</ng-container>
My Требуется загрузить данные для options
динамически. т.е. загрузка данных для этих полей с сервера после того, как пользователь начнет печатать (я буду использовать mat-auto-complete
вместо mat-select
). Я сталкиваюсь с некоторыми проблемами при создании стекаблица для примера. (на данный момент: https://stackblitz.com/edit/angular-8-material-starter-template-lpmxwi)
Если кто-то реализовал что-то подобное или дать какое-то направление, это было бы действительно здорово.
Обновление:
Хотелось бы подчеркнуть, что использование автозаполнения материала не является проблемой. Проблема заключается в интеграции автозаполнения и динамического обновления значений для компонента построения запросов. Построитель запросов не заполняет значения, если я обновляю его программно после его инициализации, как показано ниже.
onFieldChange ($event, rule) { // gets called when I change the field dropdown
if (this.params.config.fields[$event].type === 'category') {
// updating 'options' (like male and female) dynamically
// in actual scenario, I will be calling server to get its' values
this.params.config.fields[$event].options = [
{ name: 'Aaa', value: 'a' },
{ name: 'Bbbb', value: 'b' },
{ name: 'Cccc', value: 'c' },
{ name: 'Dddd', value: 'd' }
];
}
}