我正在尝试从[key:string]:any
设置一个表单组,但是它没有保留数组,当数组有一个位置时它就变成了一个数字,而当数组有多个位置时我就得到了一个错误。
// Example
let keyList = {
'TestArray' = [1],
'Name' = 'John'
};
let formGroup = this.formBuilder.group(keyList);
console.log(formGroup.get('TestArray').value); // 1 instead of [1]
答案 0 :(得分:1)
要创建值数组,您应该创建formArray
component.ts
let keyList = {
'TestArray':this.formBuilder.array([[1]]),
'Name' : 'John'
};
let formGroup = this.formBuilder.group(keyList);
console.log(formGroup.get('TestArray').value);
答案 1 :(得分:1)
'TestArray' = [1]
表示您正在创建formControl而不是formArray。
要创建formArray,请使用 formBuilder.array
const array = [1,2,3];
let keyList = {
'TestArray' = this.formBuilder.array(array),
'Name' = 'John'
};
请参考用于创建不同类型的控件的示例:-
createForm() {
this.form = this.formBuilder.group({
'firstName': 'MyFirstName',
'lastName' : ['MyLastName'],
'contact': ['99999999999', [Validators.required]],
'agree': [true, Validators.requiredTrue],
'hobbies': this.formBuilder.array(['reading, cooking']),
'locations': [[], Validators.required],
});
}
答案 2 :(得分:1)
尝试一下:
let keyList = {
'TestArray' : new FormControl([1]),
'Name' : 'John'
};
let formGroup = this.formBuilder.group(keyList);
console.log(formGroup.get('TestArray').value);
您将获得的输出类似于:
[1]
0: 1
length: 1