angular - react 形式的 formGroup.get 与 formGroup.controls - Angular

标签 angular angular-reactive-forms

选择验证时是否有任何首选方式

  • myForm.controls['name'].valid
  • myForm.get('name').valid

因为两者似乎只是在句法上有所不同,但实现了相同的目标。

<label>Name
  <input type="text" formControlName="name">
</label>
<div class="alert" *ngIf="!myForm.controls['name'].valid && myForm.controls['name'].touched">
  {{ titleAlert }}
</div>

一样

<div class="alert" *ngIf="!myForm.get('name').valid && myForm.get('name').touched">
  {{ titleAlert }}
</div>

根据我检查的代码,get 有这段代码:

AbstractControl.prototype.get = function (path) { return _find(this, path, '.'); };

我刚刚开始使用 Angular,因此不胜感激专家意见。

最佳答案

正如您所发现的,FormGroup.get 旨在通过其路径 访问目标表单控件。并且更多的用于复杂的(多层嵌入)情况,这样可以很容易的从多层嵌入的表单中获取目标控件,也可以使代码清晰易懂。

以下面为例,您可以通过 this.form.get('test.0') 而不是 this.form.controls 来访问嵌入 FormArray 的第一个元素.test.controls[0]:

this.form = this.formBuilder.group(
  {
    test: this.formBuilder.array(
      [
        ['form control 1 in form array'],
        ['form control 1 in form array'],
        ...
      ]
    )
  }
);

关于angular - react 形式的 formGroup.get 与 formGroup.controls - Angular,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49642926/

相关文章:

angular - 响应式(Reactive)表单数组 - 推送新元素时避免验证错误

angular - 如何将 formControlName 赋予 FormArray 对象 - Angular 2 (ReactiveFormsModule)

javascript - Angular5,回复并订阅

angular - webpack live reload 不适用于@angular/cli

android - Ionic Capacitor 硬件后退按钮正在自动关闭应用程序

Angular ReactiveForm 到模型映射

angular - 具有多个输入的 FormControlName 的 ControlValueAccessor

angular - 如何在 Angular 9 Reactive Form 中获取嵌套的 FormArray 控件

node.js - 如何每次都引用本地安装的Angular2包而不是 "npm install"?

angular - 使用从其自己的组件上的可观察对象检索的数据的方法在用作 Input() 时返回未定义