У вас двойная привязка к вашим mat-slide-toggle
элементам, поэтому Angular запутывается и не знает, какое значение поместить туда.
<mat-action-list>
<mat-list-item >
<mat-slide-toggle (change)="onChange($event)"
[checked]="policy1" <----------------------------------first binding
formControlName="Policy1"><----------------------------second binding
Policy1</mat-slide-toggle>
</mat-list-item>
<mat-list-item >
<mat-slide-toggle (change)="onChange1($event)"
[checked]="policy2" <----------------------------------first binding
formControlName="Policy2"><----------------------------second binding
Policy2</mat-slide-toggle>
</mat-list-item>
</mat-action-list>
По моему опыту, это вызывает эту проблему.Правильный способ использования реактивных форм в Angular - это использование двухстороннего связывания со свойством formControlName="..."
, тогда при создании формы вам нужно сделать:
ngOnInit() {
this.formGroup = this.formBuilder.group({
Policy1: new FormControl(false, []),
Policy2: new FormControl(false, [])
});
this.policyService.getPolicy().subscribe((response) => {
this.serverData = response[0];
this.formGroup.controls.Policy1.setValue(this.serverData.policy1=="F");
this.formGroup.controls.Policy2.setValue(this.serverData.policy2=="F");
});
}
и HTML:
<mat-action-list>
<mat-list-item >
<mat-slide-toggle (change)="onChange($event)"
formControlName="Policy1"><----------------------------Only!!
Policy1</mat-slide-toggle>
</mat-list-item>
<mat-list-item >
<mat-slide-toggle (change)="onChange1($event)"
formControlName="Policy2"><----------------------------Only!!
Policy2</mat-slide-toggle>
</mat-list-item>
</mat-action-list>