用動態添加輸入字段創建表單。用通用函數替換2個特定函數
- 我宣佈我formsGroup
- 構建控制
addPers()
和addBacklogs()
創造新的領域。
我會通過一個功能和參數替換這些2個funtions我選擇我要在這裏建立一個原型的我所想象的字段:
addField(groupparam: FormGroup, fieldparam : FormArray, functionAdd: FormGroup): void {
const control = <FormArray> this.<groupparam>.controls[fieldparam];
control.push(this.<functionAdd()>);
}
這裏是我的TS文件
export class AjoutProjetComponent implements OnInit {
isLinear = false;
firstFormGroup: FormGroup;
secondFormGroup: FormGroup;
thirdFormGroup: FormGroup;
constructor(private _formBuilder: FormBuilder) {}
ngOnInit() {
this.firstFormGroup = this._formBuilder.group({
leadProj: ['', Validators.required],
nomProj: ['', Validators.required],
descProj: ['', Validators.required],
besProj: ['', Validators.required],
});
this.secondFormGroup = this._formBuilder.group({
pers: this._formBuilder.array([this.createItem()])
});
this.thirdFormGroup = this._formBuilder.group({
backlog: this._formBuilder.array([this.createFonct()])
});
console.log(this.secondFormGroup);
}
createItem(): FormGroup {
return this._formBuilder.group({
name: ['', Validators.required],
poste: ['', Validators.required],
});
}
createFonct(): FormGroup {
return this._formBuilder.group({
fonctionnalite: ['', Validators.required],
userStory: ['', Validators.required],
});
}
deleteItem(index: number) {
const control = <FormArray> this.secondFormGroup.controls['pers'];
control.removeAt(index);
}
addPers(): void {
const control = <FormArray> this.secondFormGroup.controls['pers'];
control.push(this.createItem());
}
addBacklog(): void {
const control = <FormArray> this.thirdFormGroup.controls['backlog'];
control.push(this.createFonct());
}
然後在HTML而不是通過AddBacklog()
或AddItem()
我會通過一個相同的函數與足夠的參數addField(groupparam, fieldparam, functionAdd)
聽起來像個好主意?你的問題是什麼? – mvuajua
如何用一個函數替換這兩個函數? (原型中指定) – infodev