Как добавить FormArray одного компонента со значениями другого компонента в Angular 6 - PullRequest
0 голосов
/ 16 сентября 2018

Я хочу использовать один и тот же FormArray между двумя компонентами для сохранения данных.Код обоих компонентов выглядит следующим образом:

xyz.component.ts

createForm(data: any): FormGroup {
  return this.formBuilder.group({
    contractId: [data ? data.contractId : ''],
    contractName: [data ? data.contractName : '', Validators.required],
    contractServiceList: this.formBuilder.array(
      this.createContractService(data ? data.contractServiceList : null), this.arrayValidator()
    )
  });
}

createContractService(data: any[] | null): FormGroup[] {
  return data ?
    data.map(x => {
      let group = this.formBuilder.group({
        serviceId: [x.serviceId, Validators.required],
        copay: [x.copay, Validators.required],
        coinsurance: [x.coinsurance, Validators.required],
        deductibleApplies: [x.deductibleApplies, Validators.required],
        penaltyApplies: [x.penaltyApplies, Validators.required],
      });
      return group;
    }) : [this.formBuilder.group({
      serviceId: ['', Validators.required],
      copay: ['', Validators.required],
      coinsurance: ['', Validators.required],
      deductibleApplies: ['', Validators.required],
      penaltyApplies: ['', Validators.required],
    })];
}

abc.component.ts

createForm(data: any): FormGroup {
  return this.formBuilder.group({
    contractId: [data ? data.contractId : ''],
    contractName: [data ? data.contractName : ''],
    contractServiceList: this.formBuilder.array(
      this.createContractService(data ? data.contractServiceList : null), this.arrayValidator()
    )
  });
}

createContractService(data: any[] | null): FormGroup[] {
  return data ?
    data.map(x => {
      let group = this.formBuilder.group({
        penaltyRule: [x.penaltyRule, Validators.required],
        penaltyType: [x.penaltyType, Validators.required],
        penaltyValue: [x.penaltyValue, Validators.required],
        deductibleAppliesPenalty: [x.deductibleAppliesPenalty, Validators.required]
      });
      return group;
    }) : [this.formBuilder.group({
      penaltyRule: ['', Validators.required],
      penaltyType: ['', Validators.required],
      penaltyValue: ['', Validators.required],
      deductibleAppliesPenalty: ['', Validators.required]
    })];
}

Нажатие кнопки Сохранить позволяет перейти кследующий компонент, поэтому FormArray должен быть добавлен со значениями в секундах после сохранения значений из первого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...