【问题标题】:Angular - TypeError: Cannot read property 'clearValidators' of undefinedAngular - TypeError:无法读取未定义的属性“clearValidators”
【发布时间】:2021-05-01 19:59:06
【问题描述】:

我正在尝试从我的 Angular 反应式表单中动态删除验证。

错误:

我的代码初始化表单:

experienceForm = this.fb.group({
  'positionTitle': ['', Validators.required],
  'companyName': ['', Validators.required],
  'startDate': ['', Validators.required],
  'endDate': ['', Validators.required]
});

负责动态移除验证的函数:

togglePresent(event: any) {
   if (event.checked) {
      this.present = true;
      this.experienceForm.get('endDate')?.clearValidators();
      this.experienceForm.get('endDate')?.updateValueAndValidity();
   }
   else { this.present = false; }
 }

基本上,只要选中复选框,该函数就会运行。我对此感到沮丧是因为我正在实现 Angular 文档中的代码。

有什么想法吗?

【问题讨论】:

  • constructor or in ngOnInit 中的表单在哪里初始化?你在哪里调用 togglePresent 方法?
  • 我也没有初​​始化表单。每当切换复选框值时,我都会在我的 HTML 模板中调用 togglePresent 方法。
  • @DaveGuerrero,控制台中的错误指向第 78 行的 addExperience 函数/行。如果可能的话,您可以在您的问题中添加该代码吗..
  • @DaveGuerrero stackblitz.com/edit/… 这是演示工作
  • @DaveGuerrero 您可以像 experienceForm: FormGroup = <FormGroup>{}; 那样临时分配它,然后您可以在 ngOnInit() 中使用 this.fb.formGroup({}) 创建您的 FormGroup。

标签: angular angular-reactive-forms


【解决方案1】:

您是否错过了 experienceForm = this.fb....中的“this”?

所以应该是 this.experienceForm = .........

所以它可以从该组件中的其他方法访问

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2018-10-29
    • 2021-07-21
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多