Флажки в Ангуляр 5 - PullRequest
       29

Флажки в Ангуляр 5

0 голосов
/ 27 сентября 2018

Я новичок в 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>
...