Angular 角度8垫自动完成,仅在最后一项上显示 我正在做一个自定义表单,表单的角度为8,在每个位置我都有一个自动完成作为输入,但行为并不是我所期望的。它只显示在las位置输入上。
代码:Angular 角度8垫自动完成,仅在最后一项上显示 我正在做一个自定义表单,表单的角度为8,在每个位置我都有一个自动完成作为输入,但行为并不是我所期望的。它只显示在las位置输入上。,angular,autocomplete,angular-material,angular8,Angular,Autocomplete,Angular Material,Angular8,代码: {{'product.providers.txt.provider'| translate}} {{option.provider\u business\u name} 以下是一个例子: 因为我从API接收数据,所以我没有在每个循环上添加控件,下面是我如何解决它的 setExistingAssignments(assignmentsSet) { const control = this.myForm.get('assignments') as FormArray;
{{'product.providers.txt.provider'| translate}}
{{option.provider\u business\u name}
以下是一个例子:
因为我从API接收数据,所以我没有在每个循环上添加控件,下面是我如何解决它的
setExistingAssignments(assignmentsSet) {
const control = this.myForm.get('assignments') as FormArray;
assignmentsSet.forEach(s => {
control.push(this.fb.group({
// Some assignaments
}));
this.ManageNameControl(control.length - 1); // This is the function
});
this.available = true;
return control;
}
// The function
ManageNameControl(index: number) {
const arrayControl = this.myForm.get('assignments') as FormArray;
if (arrayControl.length > 0) {
this.filteredOptions[index] = arrayControl.at(index).get('id_provider').valueChanges
.pipe(
startWith<string>(''),
map(value => typeof value === 'string' ? value : value['id_provider']),
map(name => name ? this._filter(name, 'provider') : this.options.slice())
);
}
}
setExistingAssignments(assignmentsSet){
const control=this.myForm.get('assignments')作为FormArray;
assignmentsSet.forEach(s=>{
control.push(this.fb.group({
//一些任务
}));
this.ManageNameControl(control.length-1);//这是函数
});
this.available=true;
返回控制;
}
//功能
ManageNameControl(索引:编号){
const arrayControl=this.myForm.get('assignments')作为FormArray;
如果(arrayControl.length>0){
this.filteredOptions[index]=arrayControl.at(index.get('id\u provider')。值更改
.烟斗(
startWith(“”),
映射(值=>typeof值=='string'?值:值['id\u provider']),
映射(name=>name?this.\u过滤器(name,'provider'):this.options.slice()
);
}
}
所以之前的函数在循环之外!现在它在里面,所以在每个位置它都会添加一个控件并搜索该行
多谢各位 你能创建stackblitz吗?我不能复制同一个例子,但它基本上是一个在表单数组中的角度材质自动完成,它只与该表单数组的最后一个输入一起工作,可能它失去了焦点,或者它不意味着要在表单数组中使用!
setExistingAssignments(assignmentsSet) {
const control = this.myForm.get('assignments') as FormArray;
assignmentsSet.forEach(s => {
control.push(this.fb.group({
// Some assignaments
}));
this.ManageNameControl(control.length - 1); // This is the function
});
this.available = true;
return control;
}
// The function
ManageNameControl(index: number) {
const arrayControl = this.myForm.get('assignments') as FormArray;
if (arrayControl.length > 0) {
this.filteredOptions[index] = arrayControl.at(index).get('id_provider').valueChanges
.pipe(
startWith<string>(''),
map(value => typeof value === 'string' ? value : value['id_provider']),
map(name => name ? this._filter(name, 'provider') : this.options.slice())
);
}
}