相关疑难解决方法(0)

Angular Reactive Forms 控件与 Get

当我通过以下方式获取反应形式的值时有什么区别:

this.someForm.controls['firstName'].value
this.someForm.get('firstName').value

public someForm: FormGroup = this.formBuilder.group({
  firstName: ['', Validators.required],
});

this.someForm.controls['firstName'].value
this.someForm.get('firstName').value<br>
Run Code Online (Sandbox Code Playgroud)

上面是我的表单以及从表单获取值的两种不同方法。但是两种方式之间有什么区别(如果有的话)?

angular angular-forms angular-formbuilder

7
推荐指数
1
解决办法
3053
查看次数

在模板中使用 Angular Reactive Forms .get() 方法会导致像组件方法一样不必要的方法调用吗?

我知道如果我在模板中使用方法调用,它会一遍又一遍地执行(不理想)。我已经通过使用纯管道和记忆方法的组合解决了这个问题。但我也在使用反应式表单,并在我的模板中使用 myFormGroup.get('myFormControl').value 来获取值。这是否也会像我的组件中的方法一样重复执行,或者 Angular 是否有适当的策略来防止这种情况发生?一个用法示例是使用 *ngIf 并让条件基于表单的值。

此外,我目前没有遇到任何性能下降,但我想在使用此应用程序走得太远之前以最佳方式实现这一点(并且只是好奇)。

我可以轻松地更新它以直接引用表单对象上的属性,我只是更喜欢方法调用的语法。任何见解都会有所帮助,谢谢!

javascript angular2-changedetection angular angular-forms

7
推荐指数
1
解决办法
2976
查看次数

即使表单未通过验证,组件加载时反应形式的Angular 7设置值也会启用保存按钮

我有以下问题。单击以检查堆栈闪电

我在构造函数中设置了反应形式:

this.formGroup = this.fb.group({
      'family_name_en': new FormControl('', Validators.required),
      'family_name_ar': new FormControl('', [Validators.required, Validators.pattern('[\u0600-\u06FF ]*')]),
      'unit_id': new FormControl({ value: '', disabled: true }, [Validators.required])
});
Run Code Online (Sandbox Code Playgroud)

而且ngOnInti(),我正在获取与关联的数据unit_id

当我将数据从平台迁移到另一个平台时,不建议使用阿拉伯语的姓氏,但现在是这样。因此,大多数数据将不使用阿拉伯文名称加载。

问题是该按钮始终处于启用状态,而我需要做的是,如果用户要更新此unit_id按钮,则他应该添加阿拉伯语名称,以便随后启用该按钮。

如果表单有效,则启用按钮在加载组件时不会造成伤害。

这是getData()获取数据并设置表单组控件值的方法:

ngOnInit() {
    this.getDataById();
}
Run Code Online (Sandbox Code Playgroud)

getDataById():

getDataById() {
    this.showSpinner = true;
    this.auth.getDataById(this.unit_id).subscribe(
      (data) => {
        if (data['info'][0]['total'] == 1) {
          this.noDataBool = false;
          this.showSpinner = false;
          this.family_name_en = data['info'][0]['hh_last_name_en'];
          this.formGroup.controls['family_name_en'].setValue(this.family_name_en);
          this.family_name_ar = data['info'][0]['hh_last_name_ar'];
          this.formGroup.controls['family_name_ar'].setValue(this.family_name_ar);
          this.unit_id = data['info'][0]['unit_id'];
          this.formGroup.controls['unit_id '].setValue(this.unit_id);
    }
} …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms angular6 angular7

4
推荐指数
1
解决办法
6467
查看次数