加载组件时触发事件(打开)

时间:2018-11-14 10:43:49

标签: angular

我想在打开相应事件时触发一个事件。让我解释一下情况。

这是我的组件选择器

<app-sadad class="knet-div" [payMethod]="'knet'"></app-sadad>

放置在另一个组件html内,在app-sadad组件内,我使用了反应形式,如果payMethod = Knet,我必须使用验证器。需要特定的formControl(olpid)。

this.sadadForm = new FormGroup({
          'olpid': new FormControl(''),
          'firstName': new FormControl('', Validators.required)
      });

我尝试了ngOnInit,ngAfterViewInit,它们没有在表单加载时触发,而是在应用程序加载时触发。请告诉我该事件在特定表单加载时触发。

1 个答案:

答案 0 :(得分:0)

您只需要检查onInit(如果payMethod的值==='knet'),然后编写包括必填项的Validators。否则将其保留为空。

Validators.compose返回ValidationFn。您可以将其分配给表单控件。

@Input() payMethod;
validatorsComposition = null;

ngOnInit(){
  if(this.payMethod === 'knet'){
    this.validatorsComposition = Validators.compose([Validators.required]);
  } 

  this.sadadForm = new FormGroup({
      'olpid': new FormControl('', this.validatorsComposition),
      'firstName': new FormControl('', Validators.required)
  });
}

希望这会有所帮助。