javascript - Matautocomplete - 如果键入的值不在列表中,则添加一个新对象
问题描述
我有一个输入框,用户可以在其中输入任何文本。当用户键入时,会显示一个自动完成面板并突出显示选项。
我想做以下事情:
如果用户键入的内容与任何内容都不完全匹配,则自动完成中的一个选项应显示:“create new...”
选择“创建新...”后,我应该能够保留用户输入的输入值,而不是将其更改为“创建新...”。
对于第 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>
解决方案
推荐阅读
- python - Smart way to reduce image colors
- jenkins - How to make Jenkins step move on and don't wait for a process to finish on Windows
- python - Python:while循环不循环
- python - How to access dictionary values when key isn't exactly the same?
- javascript - 动态谷歌地图图标
- angular - 在父组件中发生事件后禁用子组件中的按钮,而无需刷新页面以使禁用生效
- php - 如何在请求验证后使用 Laravel 在下拉列表中显示选定的值?
- facebook - Facebook API 评论数
- c# - 使用 TaskCompletionSource 将库转换为可等待的库?
- swift - 如何修复 View SwiftUi 半关闭的 bug