У меня есть поле ввода, где пользователь может ввести любой текст. Когда пользователь печатает, появляется панель автозаполнения с выделенной опцией.
Я хочу сделать следующее:
Если пользователь вводит что-то, что не совпадает ни с чем полностью, опция в автозаполнении должна показывать: «создать новый. .. "
После выбора" создать новый ... "я смогу сохранить введенное пользователем значение ввода вместо того, чтобы изменить его на" создать новый ... ".
Для пункта 1 в фильтры я помещаю «создать новый ...» вручную, если критерии удовлетворены, со значением -1.
Я не уверен, как обращаться с пунктом 2. Фрагмент кода:
TS:
onCategorySelectionChanged(event, category?: Category) {
console.log('first...on category selected');
console.log(event.source.value);
console.log(event.source.viewValue);
if (category.id === -1) {
console.log('retain the input value here...');
}
}
HTML:
<input [matAutocomplete]="autoCategory"
formControlName="documentCategory"
matInput
type="text"
(blur)="categoryNameOnBlur()"
>
<mat-autocomplete #autoCategory="matAutocomplete" [displayWith]="displayCategoryFn"
autoActiveFirstOption
>
<mat-option *ngFor="let category of filteredCategories | async" [value]="category"
(onSelectionChange)="onCategorySelectionChanged($event, category)">{{category.name}}
</mat-option>
</mat-autocomplete>