我有一个autocomplete
组件,它由客户列表组成,在autocomplete
组件table
组件下面,如下图所示:
该表默认为空。现在,当我从choose/click
组件customer-list(i,e autocomplete)
进入时,我应该在表中显示该客户的详细信息,如下所示:
Stackblitz DEMO
答案 0 :(得分:4)
Demo with option selected from autocomplete is inserted into Table
optionSelected
上将mat-autocomplete
事件用作(optionSelected)="selectedOption($event)"
selectedtableData: PeriodicElement[] = []
。请参阅此代码来处理要求:
const ELEMENT_DATA: PeriodicElement[] = [
{position: 1, email: 'customer1@gmail.com', name: 'Customer 1'},
{position: 2, email: 'customer2@gmail.com', name: 'Customer 2'},
{position: 3, email: 'customer3@gmail.com', name: 'Customer 3'},
{position: 4, email: 'customer4@gmail.com', name: 'Customer 4'} ];
selectedOption(event) {
const selectedValue = event.option.value;
let selectedvalueArr: PeriodicElement = ELEMENT_DATA.find(e=>e.name==selectedValue);
selectedvalueArr && this.selectedtableData.push(selectedvalueArr)
this.dataSource = new MatTableDataSource(this.selectedtableData);
}
更新1:
要创建唯一的序列号:
代码: https://stackblitz.com/edit/angular-add-element-from-autocomplete-cexyka?file=app/autocomplete-filter-example.ts
答案 1 :(得分:1)
您可以像在示例中使用的那样,在具有@ angular / material的表上使用过滤。这是它的文档:Angular Material Table Filtering。
您可以使用optionSelected
上的mat-autocomplete
输出来选择选项时设置表值。并在输入更改时清除表值。
我通过修改您的演示Stackblitz在Stackblitz上做了一个快速示例。
希望有帮助!
答案 2 :(得分:-1)