订阅多个字段的 valueChanges 导致反应形式的性能问题 angular 2

Subscribing to valueChanges for multiple fields is causing performance issue in reactive form angular 2

我有 50 多个字段,它们是反应形式的输入文本和下拉菜单。这些字段相互依赖,以便在选择后触发验证并显示相关字段。

我订阅了 ngOnInit() 中的值更改,如下所示:

  ngOnInit() {

    this.setPageValidation();

  }

  setPageValidation() {
    this.NameSubscription = this.FormGroup.get('personnel').get('name').valueChanges.subscribe(data 
      => {
     this.enableOrders();
    });

   this.StateSubscription = this.FormGroup.get('personnel').get('state').valueChanges.subscribe(data 
     => 
    {
      this.enableAccount();
    });
   
    // more value changes subscription like 40 fields ............................
  }

加载表单时,由于在加载表单时订阅了值更改,加载时间变长了。

我尝试实现它以将代码移动到 ngOnChanges() 但它不会触发其他字段的启用和显示,具体取决于从 table 如果这些字段有值。它只是填充第一个字段,其余部分根据其值不显示。

在此先感谢您。如果有任何最佳方法可以解决它而不会出现性能问题,我非常感谢您的帮助。

您可以使用单个订阅。

this.personnelSubscription = 
  this.Formgroup.get('personnel').valueChanges.subscribe(data => {
     if (data) {
        //Console log the data here. It will print the formGroup of personnel
        // then select the control and add your validations
        // like this data.controls.state
     }
  })