2017-02-18 5 views
1

Das ist mein HTML. Ich mag den Wert aller ausgewählten Checkbox erhalten, wenn eine Checkbox oder deaktiviert dh (ändern) Ereignis ausgelöstWie man Checkbox dynamisch erzeugt und den Wert aller ausgewählten Checkbox in Winkel 2 erhält

<div class="checkbox checkbox-primary" *ngFor="let category of categories; let i = index"> 
    <input type="checkbox" id="checkbox_category" (change)="search(category, $event)" /> 
</div> 

Dies ist meine Suchmethode in Winkeln 2-Komponenten überprüft wird:

selectedItems: any = []; 
search(category, event) { 

    // set selectedItems here 
} 

Antwort

1

ich löste das Problem wie folgt aus: https://plnkr.co/edit/mWtlkydF0FzioS3c2esQ?p=preview

@Component({ 
selector: 'my-app', 
template: ` 
<div class="checkbox checkbox-primary" *ngFor="let category of categories; let i = index"> 
    <input type="checkbox" id="checkbox_category_{{i}}" (change)="search(category, $event)" /> 
    <label> {{category?.name }} </label> 
</div> 

<b>selectedItems</b>: {{selectedItems | json}} 
`, 
}) 
export class App { 
    name:string; 
    categories: any; 
    selectedItems: any = []; 

    constructor() { 
    this.name = 'Angular2'; 
    this.getDate(); 
    } 

    //this data may come from api 
    getDate(){ 

    this.categories = [ 
     {name: 'ferrari', price: 123}, 
     {name: 'porche', price: 456}, 
     {name: 'bentley', price: 789} 
     ]; 
    } 

    search(category, event) { 

     var index = this.selectedItems.indexOf(category.name); 
     if (event.target.checked) { 
      if (index === -1) { 
       this.selectedItems.push(category.name); 
      } 
     } else { 
      if (index !== -1) { 
       this.selectedItems.splice(index, 1); 
      } 
     } 
     console.log(this.selectedItems); 
    } 
} 
1

können Sie tun so etwas wie dieses: https://plnkr.co/edit/94Gubz?p=preview

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div class="checkbox checkbox-primary" *ngFor="let category of categories; let i = index"> 
    <input type="checkbox" id="checkbox_category" [checked]="category.selected" (click)="select(i)" /> {{category.value}} 
</div> 
    `, 
}) 
export class App { 
    categories: any; 
    selected: any; 

    constructor() { 
    this.categories = [ 
     {value: 'ferrari', selected: false }, 
     {value: 'porche', selected: false }, 
     {value: 'bentley', selected: false } 
     ]; 
     } 

    select(index) { 
    this.categories[index].selected = !this.categories[index].selected 
    } 

    search() { 
    this.selected = this.categories.filter(cat => cat.selected) 
    } 

} 
+0

console.log (this.selected) und sehen, es wird Array der ausgewählten Elemente nicht wie erwartet zurückgegeben. – saif

Verwandte Themen