代码之家  ›  专栏  ›  技术社区  ›  AJ-

角度-格式,如何重置格式的特定字段?

  •  0
  • AJ-  · 技术社区  · 7 年前

    我不知道如何重置FormArray的单个字段,例如:

    myForm = this.fb.group(
            {
                title: ["", [Validators.required, Validators.minLength(4)]],
                date: ["", Validators.required],
                pairs: this.fb.array(
                    this.fPairs.map(f =>
                        this.fb.group({
                            score: [],
                            value: [],
                            valueRel: []
                        })
                    )
                )
            },
            {
                validator: minMaxValidator
            }
        );
    

    fPairs: Array<fPairs> = [
            {score: 0, value: 0, valueRel: 0},
            {score: 0, value: 0, valueRel: 0},
            {score: 0, value: 0, valueRel: 0},
            {score: 0, value: 0, valueRel: 0}
        ];
    

    到目前为止,为了重新设置我表格的这一部分,我所取得的成绩是:

    pairsControl= this.myForm.controls["pairs"] as FormArray;
    

    然后使用:

    这个.pairsControl.reset();

    但这会重置FormArray的每个字段,而我想要的是只重置一个特定字段,

    例如“ score"

    this.fixedPointsControl.reset(["score"]);
    

    但它所做的是,像前面的表达式一样重置所有内容,所以没有任何更改!

    重置formArray特定字段的正确方法是什么?

    2 回复  |  直到 7 年前
        1
  •  2
  •   KShewengger    7 年前

    如果FormArray中有4个字段,则可以通过其索引重置它,因为FormArray中有一个FormGroup数组,因此可以通过其索引访问它。

    Stackblitz Demo

    const pairs = this.myForm.get['pairs'] as FormArray;   // Use 'get' instead of 'controls'
    
    // Iterates the Pairs' FormArray controls and use patchValue if you want to reset or assign a new value to a particular property
    pairs.controls.forEach(pair => pair.patchValue({ score: '' }));
    
        2
  •  1
  •   SiddAjmera    7 年前

    pairs 获得 FormArray resetField 方法设置一个名为 fieldName 那应该是文件上的名字 形式阵列 reset

    大概是这样的:

    get pairs() {
      return (<FormArray>this.myForm.get('pairs'));
    }
    
    resetField(fieldName) {
      this.pairs.controls.forEach(group => group.get(fieldName).reset());
    }
    

    <button (click)="resetField('score')">Reset Score</button> | 
    <button (click)="resetField('value')">Reset Value</button> | 
    <button (click)="resetField('valueRel')">Reset Value Rel</button>
    

    这里有一个 Working Sample StackBlitz

    推荐文章