Я новичок в angular, поэтому, пожалуйста, извините, если я собираюсь сказать / спросить что-то очень глупое.Я следовал этому примеру, чтобы добавить флажки в мою форму: введите здесь описание ссылки
Все работает хорошо, я могу сохранить идентификаторы своих флажков в базе данных.Проблема в том, что, когда я пытаюсь изменить форму, я не могу установить флажки, которые были проверены ранее и сохранены в моей базе данных (список строк, я знаю, что это не нормально, но сейчас я буду держать это так).Я получаю список, я преобразую его в массив для итерации, а затем я попытался установить значение true для элементов управления, но ничего не работает.Кто-нибудь может мне помочь?Это мой файл: addmodify.component.ts: `
public natura = [
{ id: 1, name: 'si'},
{ id: 2, name: 'af'},
{ id: 3, name: 'erg'},
{ id: 4, name: 'rid'},
{ id: 5, name: 'ridc'},
{ id: 6, name: 'qual'},
{ id: 7, name: 'Ridte'},
{ id: 8, name: 'Alt'}
];
constructor(
private _fb: FormBuilder,
private _avRoute: ActivatedRoute,
private _suggerimentoService: SuggerimentoService,
private _nuovoPartecipanteService: NuovoPartecipanteService,
private toasterService: ToasterService,
private translate: TranslateService,
private _router: Router) {
const controls = this.natura.map(c => new FormControl(false));
this.suggerimentoForm = this._fb.group({
natura: new FormArray(controls, minSelectedCheckboxes(1))
});
controls[0].setValue(true); // this works, on init it checks the first checkbox.
}
ngOnInit() {
if (this.id > 0) {
this._suggerimentoService.getSuggerimentoById(this.id)
.subscribe(resp => {
const controls = this.natura.map(c => new FormControl(false));
const listNatura = resp.natura.split(','); // here resp.natura is ="4,5" and then listNatura will be an array with those 2 values
// this is how I tried to set the checkboxes checked but it's wrong
listNatura.forEach(function (value) {
console.log('valore=',value);
controls[0].setValue(true);
});
resp.natura = this.natura; // I have to do this because if not (if I leave resp.natura a string) I'm getting an error.
this.suggerimentoForm.setValue(resp);
}, error => this.errorMessage = error);
}
}
, а это мой HTML-файл:
<form class="k-form" [formGroup]="suggerimentoForm" (ngSubmit)="save()" #formDir="ngForm" novalidate>
<div formArrayName="natura" *ngFor="let nat of suggerimentoForm.controls.natura.controls; let i = index">
<input type="checkbox" [formControlName]="i" class="k-checkbox " value="{{natura[i].id}}" id="{{natura[i].id}}">
<label class="k-checkbox-label" for="{{natura[i].id}}">{{natura[i].name}}</label>
</div>
</form>