代码之家  ›  专栏  ›  技术社区  ›  Mohammad Dayyan

反作用形式的数列,角6?

  •  2
  • Mohammad Dayyan  · 技术社区  · 7 年前

    我知道我们可以在 FormGroup 福尔马雷如下:
    https://alligator.io/angular/reactive-forms-formarray-dynamic-fields/

    ngOnInit() {
      this.orderForm = this.formBuilder.group({
        customerName: '',
        email: '',
        items: this.formBuilder.array([ this.createItem() ])
      });
    }
    
    createItem(): FormGroup {
      return this.formBuilder.group({
        name: '',
        description: '',
        price: ''
      });
    }
    
    addItem(): void {
      this.items = this.orderForm.get('items') as FormArray;
      this.items.push(this.createItem());
    }
    
    <div formArrayName="items"
      *ngFor="let item of orderForm.get('items').controls; let i = index;">
      <div [formGroupName]="i">
        <input formControlName="name" placeholder="Item name">
        <input formControlName="description" placeholder="Item description">
        <input formControlName="price" placeholder="Item price">
      </div>
    
      Chosen name: {{ orderForm.controls.items.controls[i].controls.name.value }}
    </div>
    

    但我想要的是数字数组而不是对象。
    我们怎么能在角6的情况下做呢?
    如何从中添加或删除数字项?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Mohammad Dayyan    7 年前

    可以将任何窗体控件而不是窗体组传递给窗体数组:

    new FormGroup({
      // ...
      items: new FormArray([new FormControl(123)]),
    });
    

    可能带有角度的控件: FormGroup 我是说, FormArray 我是说, FormControl 是的。

    FormBuilder (我个人认为这是过时的,只是一种观点)只是为你创造了那些东西。如果你想坚持下去,试试看

    items: this.formBuilder.array([123])
    

    添加和删除项:

    private addItem(value: number) {
        this.itemsFormArray.push(new FormControl(value));
    }
    private removeItem(value: number) {
        let index = this.itemsFormArray.controls.findIndex(control => { 
            return control.value == value;
        });
        this.itemsFormArray.removeAt(index);
    }
    private get itemsFormArray(): FormArray {
        return this.formGroup.get('items') as FormArray;
    };