2017-01-23 3 views
0

Я пытаюсь создать динамический список с флажком с помощью *ngFor. Здесь я хочу, чтобы флажок можно было проверять только по одному (если пользователь щелкнул второй флажок, который был выбран ранее, он должен быть снят).угловой 2, * ngFor checkbox проверить только один

<div class="img-prev col-md-12" *ngFor="let imgList of uploadedImg; let i = index"> 
    <div class="col-md-1"> 
     <input [ngModel]= "selectImg" (click)="updateSelection(i, imgList)" type="checkbox" /> 
    </div> 
</div> 
+0

Не могли бы вы опубликовать свой метод updateSelection? Поскольку по умолчанию используется флажок по умолчанию, вам необходимо снять флажок и установить этот флажок. –

+0

Вы должны включить переключатель, если вы хотите выбрать только один параметр. Вы можете пометить свой переключатель, чтобы выглядеть как флажок, если хотите. – JSNinja

+0

исправлено. understoop. updateSelection (imglistIndex, imgFile) { this.selectImg = imglistIndex; } любой, пожалуйста, подтвердите, это эффективный способ. – sibi

ответ

0

Было бы более эффективным реализовать пользовательский интерфейс ISelectable, что-то вроде этого.

export interface ISelectable { 

selected?: boolean;} 

Затем для каждого объекта, который вы хотите представлять выбираемый элемент пользовательского интерфейса, вы можете реализовать ISelectable.

например:

export class SelectableImg implements ISelectable.... 

Затем в шаблоне вы можете контролировать [проверено] связывания с img.selected.

<div class="img-prev col-md-12" *ngFor="let imgList of uploadedImg; let i = index"> 
    <div class="col-md-1"> 
     <input [ngModel]= "selectImg" [checked]="imgList.selected"(click)="updateSelection(i, imgList)" type="checkbox" /> 
    </div> 

Создание метода deselectAll:

private deselectAll(arr: any[]){ 
arr.forEach(val =>{ 
    if(val.selected){ 
     val.selected = false; 
    } 
})} 

И обработчик событий

private updateSelection(selectedOption){ 

let selected = selectedOption.selected; 

this.deselectAll(this.allVals); 

selectedOption.selected = !selected; 
} 
Смежные вопросы