【问题标题】:Fire an event when a component is loaded(Opened)加载组件时触发事件(打开)
【发布时间】:2019-04-17 07:24:36
【问题描述】:

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

这是我的组件选择器

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

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

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

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

【问题讨论】:

    标签: angular


    【解决方案1】:

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

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      • 2013-11-23
      • 2015-11-17
      • 2012-05-05
      相关资源
      最近更新 更多