angular - 有没有办法使用角度材料自动完成来自动完成具有类型编号的对象数组的对象?
问题描述
假设对象数组,
books = [{id:1, name: 'book1'}, {id:2, name: 'book2'}];
在这里可以看到数组中每个元素的id都是一个数字。当对象数组采用给定格式时,角度自动完成组件不起作用。任何解决方法?如何使用书的id自动完成?
解决方案
是的,您可以,您只需id
在过滤之前将其转换为字符串。
我对示例进行了两项更改以使其正常工作,因此您可以按id
.
首先,ngOnInit
我确保使用对象的id
属性Book
传递给_filter
函数。
ngOnInit() {
this.filteredOptions = this.myControl.valueChanges
.pipe(
startWith<string | Book>(''),
map(value => typeof value === 'string' ? value : value.id),
map(id => id ? this._filter(id) : this.options.slice())
);
}
而在_filter
函数本身中,只需将其转换id
为字符串。
private _filter(id: number | string): Book[] {
const filterValue = String(id);
return this.options.filter(option => String(option.id).toLowerCase().indexOf(filterValue) === 0);
}
推荐阅读
- javascript - 在 React 中渲染具有不同状态的组件数组
- java - 使用 Java 从 YAML 文件中获取值
- python - 并非所有变量都显示在 jupyter notebook 的条形图中
- dictionary - Anylogic - 在 GIS 地图上放置资源
- android - 无法在我的 Android 应用程序中禁用软键盘
- audio - 如何标准化正在进行的累积和的样本?
- javascript - 如何禁用提交按钮,直到所有输入类都有 class="valid"
- java - Micronaut,db-scheduler:当前不存在事务。考虑在周围的方法上声明@Transactional
- javascript - 使用 bgcolor 隐藏所有表格行
- numpy - .T 在 np.vstack 函数中是什么意思?