Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度8垫自动完成,仅在最后一项上显示 我正在做一个自定义表单,表单的角度为8,在每个位置我都有一个自动完成作为输入,但行为并不是我所期望的。它只显示在las位置输入上。_Angular_Autocomplete_Angular Material_Angular8 - Fatal编程技术网

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())
                );
        }

    }