Оформление таблицы дизайна материала ОШИБКА TypeError: ctrl._updateTreeValidity не является функцией - PullRequest
0 голосов
/ 27 января 2020

Когда я пытаюсь загрузить таблицу материалов в веб-страницу с реактивной формой, я получаю две ошибки:

a) ОШИБКА TypeError: ctrl._updateTreeValidity не является функцией (я подозреваю, что основная ошибка)

b) busProf. html: 242 Ошибка: ошибка: невозможно найти элемент управления с путем: 'DefaultRates -> ConversionRate'

Форма отображает данные для всех элементов управления , включая значения по умолчанию. Эти две ошибки не позволяют редактировать столбец "Коэффициент конверсии". Буду признателен за любую помощь, так как я, кажется, застрял (через несколько часов, то я бы хотел администратора)

Вот соответствующий код:

InitbusinessProfile (businessProfile) : businessProfile): FormGroup {
// Код, который находится в отдельном классе

  this.fg = new FormGroup({
    Id:  new FormControl(businessProfile.Id, Validators.required),
    BusinessProfileId:new FormControl(businessProfile.BusinessProfileId, Validators.required),
    DefaultRates:     new FormArray([])
  });

  let defRates = this.fg.controls['DefaultRates'] as FormArray;
  for (var i = 0; i < businessProfile.DefaultRates.length; i++)
  {
    var item = businessProfile.DefaultRates[i]  as any;
    defRates.controls.push(item as FormArray);
  }
  return this.fg;
}   

// Main class   
form: FormGroup;
dataSource: MatTableDataSource<any>;
get DefaultRates() : any {         
    return this.form.controls['DefaultRates'] as any ; 
}
ngOnInit()
{    
   this.form =  vm.ProfileCtrls.InitbusinessProfile(response);
   this.dataSource = new MatTableDataSource(this.DefaultRates);
}   

<form [formGroup]="form">
   ....
<ng-container formArrayName="DefaultRates">
  <mat-table [dataSource]="DefaultRates.controls" class="mat-elevation-z8">                                   
    <ng-container matColumnDef="CurrencyCodeBu">
      <mat-header-cell *matHeaderCellDef class="cellHdr">Currency</mat-header-cell>
        <mat-cell *matCellDef="let DefaultRates" >{{DefaultRates.CurrencyCode}}</mat-cell>                                 
    </ng-container>
    <ng-container matColumnDef="ConversionRate">
        <mat-header-cell *matHeaderCellDef class="cellHdr">Exchange Rate</mat-header-cell>
        <mat-cell *matCellDef="let DefaultRates" >
          <mat-form-field> 
              <input matInput formControlName="ConversionRate" value={{DefaultRates.ConversionRate}}>
          </mat-form-field>    
        </mat-cell>                                 
    </ng-container>                                                                    
  </mat-table>
</ng-container>

...