在Angular中,可以使用filter()方法从数据的多个属性中筛选或搜索数据。
首先,在组件的HTML模板中,可以使用ngModel来绑定一个输入框,用于输入搜索关键字。例如:
接下来,在组件的Typescript代码中,定义一个过滤函数来对数据进行筛选。在这个例子中,假设有一个名为data的数组,每个元素都有name和age属性。可以使用Array的filter()方法来筛选数据,并根据name和age属性进行比较。例如:
data = [
{ name: 'John', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Alice', age: 35 }
];
filteredData: any[];
searchKeyword: string;
filterData() {
this.filteredData = this.data.filter(item =>
item.name.toLowerCase().includes(this.searchKeyword.toLowerCase()) ||
item.age.toString().includes(this.searchKeyword)
);
}
在上述代码中,filterData()函数使用filter()方法对data数组进行筛选。使用toLowerCase()方法来忽略大小写,并使用includes()方法来判断name属性或age属性是否包含搜索关键字。
最后,在组件的HTML模板中,可以使用ngFor指令来循环渲染筛选后的结果。例如:
-
{{ item.name }} ({{ item.age }})
在上述代码中,通过*ngFor循环遍历filteredData数组,并显示每个元素的name和age属性。
完成以上步骤后,当输入框中的搜索关键字发生变化时,filterData()函数将会被触发,筛选数据并更新filteredData数组。