使用formarray验证反应形式

时间:2017-10-21 04:46:38

标签: angular

我正在使用角度2.我需要使用formArray验证表格的反应形式。

这是我的表格。

this.addbookingForm = this.fb.group({
      FROM: ['', Validators.required],
      ITEMS: this.fb.array([this.initItems()]),

})

 initItems() {        
    const group = this.fb.group({           
          NAME: [''],
          NO_OF_ITEMS: ['',Validators.required],
          PRICE: [''],
          WEIGHT: [''],
          TOTAL: ['']                     
    });
    return group;
}

这是我的表格。

<form [formGroup]="addbookingForm" role="form" (ngSubmit)="onSubmit(addbookingForm.value)"  novalidate>

    <div formArrayName="ITEMS" class="form-group row">
         <div class="form-group col-sm-2">
                <label class="form-label">No of Items</label>
                <input type="text" pattern="^[0-9]*$" class="form-control" tabindex="7" formControlName="NO_OF_ITEMS" (change)="onChange(ITEMS.controls.value.NO_OF_ITEMS)">
                <p class="err" danger padding-left *ngIf="(!addbookingForm.controls.ITEMS.controls.NO_OF_ITEMS.valid)">Invalid number of items</p>
        </div>
    </div> 
</form>

但我收到此错误消息

  

错误类型错误:无法读取属性&#39;有效&#39;未定义的

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

按如下所示更改代码

var items = GetItemsFromLibrary()
  .Where(o => {
           if (o.Value > '3' && o.Value < '7')
             return true;
           // Object not relevant in this case
           o.Dispose()
           return false;
         })
  .ToArray();
try
{
  // Do something with relevant items
  // ...
}
finally
{
  // Dispose all items
  foreach (var item in items)
    item.Dispose();
}