角度验证器在@Input之前运行

时间:2018-05-04 18:42:33

标签: javascript angular

我有一个实际上是表单控件的组件。这个单独的组件接受一个输入(@Input),并且应该将它传递给表单验证器。问题是表单验证器在定义输入之前运行。因此结果是具有未定义参数的验证器。解决办法是什么??感谢...

export class InputComponent{

  @Input() min: number; 
  @Input() max: number; 

  formControl: FormControl;

  constructor() {

    this.formControl = new FormControl('', [
      Validators.required,
      CustomValidators.minMaxlength(this.min, this.max)
    ]);

  }

}

1 个答案:

答案 0 :(得分:3)

在Angular中,在调用ngOnInit生命周期挂钩之前,组件输入不能完全解析。在组件中,您通常不希望构造函数中包含任何内容,并且大多数初始化应在ngOnInit挂钩或更高版本中完成。

export class InputComponent{

  @Input() min: number; 
  @Input() max: number; 

  formControl: FormControl;

  constructor() {}


 ngOnInit() {
    this.formControl = new FormControl('', [
      Validators.required,
      CustomValidators.minMaxlength(this.min, this.max)
    ]);

  }
}