首页 > 解决方案 > 加载组件时触发事件(打开)

问题描述

我想在打开相应的事件时触发一个事件。让我解释一下这个场景。

这是我的组件选择器

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

它被放置在另一个组件 html 中,在 app-sadad 组件中,我使用了响应式表单,如果 payMethod = Knet,我必须对特定的 formControl(olpid) 使用 validators.required。

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

我已经尝试过 ngOnInit、ngAfterViewInit,它在表单加载时没有被触发,它在应用程序加载时触发。请告诉我在特定表单加载时触发的事件。

标签: angular

解决方案


如果 payMethod === 'knet' 的值,您只需要检查 onInit,然后编写包含必需的验证器。否则将其保留为空。

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)
  });
}

希望这可以帮助。


推荐阅读