首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角度反应式动态嵌套数组检测失去焦点时的变化

问角度反应式动态嵌套数组检测失去焦点时的变化
EN

Stack Overflow用户
提问于 2019-11-26 20:38:53
回答 1查看 475关注 0票数 4

实际上,我想要检测lostfocus/blur上输入和下拉字段的变化。

构造函数代码:

代码语言:javascript
复制
constructor(private schemaCreationService: SchemaCreationService, private formBuilder: FormBuilder) {
    this.schemaForm = this.formBuilder.group({
      definition :  this.formBuilder.group({
        fieldName: ['', {
          validators: [Validators.required], updateOn: 'blur'}],
        type: ['', Validators.required]
      }, { updateOn: 'blur' })
    });
    this.definition = this.formBuilder.array([]);
  }

我试着找出变化,但它不起作用

以下是用于检测更改的代码

代码语言:javascript
复制
ngOnInit() {
    this.schemaForm.addControl('rows', this.definition);
    this.definition.push(this.createItemFormGroup());
     this.onChanges();
  }

get definitionArray() {
  return this.schemaForm.get('rows') as FormArray;
}

//在这里,我以两种方式描述了更改,一种是注释的,但两种都不起作用。请帮助我,任何人来实现这一点。如果需要更多的细节,请让我知道。onChanges():空{

代码语言:javascript
复制
this.definitionArray.valueChanges.subscribe(values => {
    console.log(values);
  }); 

 /* const control = this.schemaForm.controls.rows as FormArray;
  for (let i = 0; i < control.length; i++) {
          control.controls[i].get('fieldName').valueChanges.subscribe(x => {
            console.log(x);
          });
    } */
 }

HTML:

代码语言:javascript
复制
  <tr *ngFor="let row of schemaForm.get('rows')?.controls;let index = index;">
                <td>
                <input  type="text"  class="form-control" [formControl]="row.get('fieldName')"/>
                <!--  <div *ngIf="submitted && fieldName.errors" class="invalid-feedback">
                      <div *ngIf="fieldName.errors.required">Column Name is required</div>
                  </div>-->
                </td>
                <td>
                  <!-- <input [formControl]="row.get('fieldtype')">-->
                  <select [formControl]="row.get('type')" class="form-control"  name="type" (change)='onDataTypeChange($event.target.value, index)' required>                      
                          <option value="lookup">Lookup</option>
                          <option value="number">Number</option>
                          <option value="string">Text</option>
                          <option value="formula">Formula</option>
                  </select>
                </td>              
                <td>                    
                    <span (click)="onAddRow(index)"> <i class="fa fa-plus-circle icon-plus-color"></i></span>
                    <span (click)="onRemoveRow(index)"><i class="fa fa-minus-circle icon-minus-color"></i></span>
                    <!-- <th scope="col"><button (click)="onAddRow()">Add Columns</button></th>-->
                </td>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-26 22:33:43

我刚刚删除了所需的原生html表单验证,它工作得很好。

Working Demo

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59051173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档