首页 > 解决方案 > FormGroup 已弃用

问题描述

我已经看到了一些相关的问题和答案,但不幸的是这些对我没有多大帮助。

ngOnInit(): void {
    this.form = this.fb.group({
      newPassword: ['', [Validators.required, Validators.minLength(6), Validators.maxLength(12)]],
      confirmPassword: [''],
    }, {validators: this.checkPasswords(this.form)});
  }
  checkPasswords(group: FormGroup) {
    let pass = group.controls.password.value;
    let confirmPass = group.controls.confirmPassword.value;
    return pass === confirmPass ? null : { notSame: true }
  }
  get newPassword() {
    return this.form.get("newPassword");
  }
  get confirmPassword() {
    return this.form.get("confirmPassword");
  }

这一点我在this.fb.group中遇到了错误。我希望我的自定义验证器工作并在视图中显示错误消息,但我没有这样做。

谁能告诉这个错误的真正含义以及如何轻松解决这个问题?

标签: angulartypescriptangular-reactive-formsformbuilderformgroups

解决方案


您用于创建 a 的重载FormGroup已弃用。使用另一个重载来实现这一点,将表单validators作为ValidatorFn | ValidatorFn[]或仅通过传递方法this.checkPasswords而不调用它this.checkPasswords(this.form),如下所示:

  ngOnInit(): void {
    this.form = this.fb.group(
      {
        newPassword: [
          '',
          [
            Validators.required,
            Validators.minLength(6),
            Validators.maxLength(12),
          ],
        ],
        confirmPassword: [''],
      },
      { validators: this.checkPasswords }
    );
  }

推荐阅读