带验证的自定义模板

Custom template with validation

我有一个class

export class Credentials {

    constructor() { }

    public username: string;
    public password: string;
}

然后像这样在我的组件中使用它

export class RegisterComponent implements OnInit {
  registerModel: Credentials

  constructor() {
    this.registerModel= new Credentials ()
  }

  ngOnInit(): void {    
  }
}

我想在调用 api 之前向模型添加自定义验证, 我知道这是可能的

registerModel: FormGroup;

  constructor(private fb: FormBuilder) {
    this.registerModel = this.fb.group({
      username: ['', Validators.required],
      password: ['', Validators.required]
    })

但我想为我的模型设置 classes/interfaces,并且里面有我的验证,这可能吗?

我知道添加验证器的唯一方法是定义 formControl - 或使用 setValidator-。所以,你的 class 可以是 属性 形式

export class Credentials {
    public form:FormGroup
    public username: string;
    public password: string;

    constructor(data:any=null) { 
      data=data || {username:null,password:null}
      this.username=data.username
      this.password=data.password
      this.form=new FormGroup({
          userName:new FormControl(this.username,Validators.required),
          password:new FormControl(this.password,Validators.required)
      })
    }
}

//and use
this.form=this.credentials.form

或者有 属性 个验证者

export class Credentials {
    public validators:any
    public username: string;
    public password: string;
    constructor(data:any=null) { 
      data=data || {username:null,password:null}
      validators={
         userName:[Validators.required],
         password:[Validators.required]
      }
    }
}

// and use as

this.form = new FormGroup({
  userName: new FormControl(
    this.credentials.username,this.credentials.validators.username
  ),
  password: new FormControl(
    this.credentials.password,this.credentials.validators.password
  )
});