簡體   English   中英

Angular 8 - FormBuilder.group 不保留數組

[英]Angular 8 - FormBuilder.group is not preserving arrays

我試圖從[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]

要創建值數組,您應該創建 formArray

組件.ts

 let keyList = {
    'TestArray':this.formBuilder.array([[1]]),
    'Name' : 'John'
};

let formGroup = this.formBuilder.group(keyList);
console.log(formGroup.get('TestArray').value);

'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],
    });
  }

嘗試這個:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM