У меня есть динамический c массив списка lkBoardTypeList, полученный с сервера. Я хочу, чтобы pu sh этот массив формировал массив при инициализации, в основном я хочу отображать флажки на основе имени платы или идентификатора в массиве. Я знаю, как сделать sh пустой массив в реактивных формах. Но как инициализировать существующим массивом. На самом деле это компонент обновления / редактирования
export class BoardTypeList{
id number;
descr string;
}
компонент:
lkBoardTypeList: LkBoardType[] = [];
SelectedLkBoardTypeList: LkBoardType[] = [];
this.boardDashboardForm = this.formBuilder.group({
id: new FormControl(this.boardObj.id, Validators.required),
location: new FormControl(this.boardObj.location),
boardType: new FormArray([])
});
this.addCheckBoxes();
..//..//
addCheckBoxes(){
this.lkBoardTypeList.forEach(() => this.boardTypeFormArray.push(new FormControl(false)));
}
get boardTypeFormArray(){
return this.boardDashboardForm.controls.boardType as FormArray;
}
loadSelected(event){
this.boardService.getBoardTypeById(event.value).subscribe( posts =>{
this.data = posts;
console.log('getBoardTypeById',this.data);
},
error => {
console.log('getBoardTypeById - error',error);
this._errorService.handleError(error);
},
() => {
this.SelectedLkBoardTypeList = this.data.boardTypes;
for (let i = 0; i < this.lkBoardTypeList.length; i++) {
..///.. what code goes here
}
});
}
И в HTML
<div class="row">
<div class="col-sm-2">
<p-dropdown [options]="boardArray" formControlName="id" (onChange)="loadSelected($event)" placeholder=" Select "></p-dropdown>
</div>
</div>
<div class="form-group" >
<div formArrayName="boardType" *ngFor="let c of boardTypeFormArray.controls; let i = index">
<input class="col-sm-1" type="checkbox" [formGroupName]="i"/>
<span class="col-sm-5" >{{lkBoardTypeList[i].descr}}</span>
</div>
</div>
RightNow, когда я проверяю элемент, я вижу formArrayName = "boardType" и элемент флажка следующим образом:
<input class="col-sm-1 ng-untouched ng-pristine ng-valid" type="checkbox" ng-reflect-name="0">
<input class="col-sm-1 ng-untouched ng-pristine ng-valid" type="checkbox" ng-reflect-name="1">
<input class="col-sm-1 ng-untouched ng-pristine ng-valid" type="checkbox" ng-reflect-name="2">
Я предполагаю, что ng-reflection -name = "0" не что иное, как значение 'i'. Что я пытаюсь установить значение массива с идентификатором из lkBoardTypeList, который равен 10,20,30.
Также, пожалуйста, дайте мне знать, как установить значения для отмеченных флажков. SelectedLkBoardTypeList - скажем, например, весь список имеет значения (10,20,30). selectedList содержит только 10, и его необходимо проверить.