微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从FormBuilder传递对象的问题

如何解决从FormBuilder传递对象的问题

当我试图将对象从formBuilder传递到打字稿文件的另一个AbstractControl函数时。

但是在传递数据时无法完成。


Stackblitz这是代码

Main.component.ts

import { FormBuilder,Validators,FormGroup,FormControl } from '@angular/forms';
import { PasswordStrengthValidator } from './PasswordStrengthValidator';

let obj = {};
obj.passwordLength  = 12;
obj.lowercaseNo     = 3;
...

this.passwordForm = this.formBuilder.group({
    password: new FormControl('',Validators.compose([
      Validators.required,Validators.minLength(obj.passwordLength),Validators.maxLength(30),PasswordStrengthValidator
    ])),},{
    validators: this.password.bind(this)
  });
}

PasswordStrengthValidator.ts

import { AbstractControl,ValidationErrors } from '@angular/forms';

export const PasswordStrengthValidator = function (control: AbstractControl): ValidationErrors | null {
    console.log(obj); // object values needs to be displayed here
    ...
}

是否可以将上面的代码替换为主组件本身,或者有什么更好的方法解决此问题

解决方法

您可以使用工厂:

export const PasswordStrengthValidatorFactory = (passObject: any) => {
  return function(control: AbstractControl): ValidationErrors | null {
    // In console required to display those values in the passObject
    console.log(passObject);

    return null;
  };
};
constructor(fb: FormBuilder) {
    console.log(this.passObject);
    this.myForms = fb.group({
      password: [null,Validators.compose([
        Validators.required,Validators.minLength(8),PasswordStrengthValidatorFactory(this.passObject)])]
    });

Link to stackblitz

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?