2016-02-25 9 views
6

Ich habe eine Liste, um Projektnamen zu überprüfen. Auf der Unterseite möchte ich ein Kontrollkästchen setzen, um alle zu aktivieren oder zu deaktivieren. Ich denke, ich brauche ein * ngIf (wenn aktiviert) mit einer * ngFor-Schleife (überprüfen Sie alle), aber das ist ziemlich die Herausforderung ... Ich kann nicht herausfinden, wie ich damit fortfahren sollte. Benutze (checked) oder etwas oder * ngIf = "(checked)" und verwende dann eine * ngFor-Schleife, um project.isChecked zu setzen. Ich komme nicht in die Logik davon.Eckig 2 Kontrollkästchen alle überprüfen

<div id="drp-project-select"> 
     <div class="scroller" [hidden]="!showMenu"> 
      <div id="search-wrapper"> 
       <i class="fa fa-search fa-xs"></i> 
       <input [(ngModel)]="searchTerm" type="text" placeholder="Zoek op naam..." #search> 
      </div> 
      <ul> 
       <li *ngFor="#project of projectdata.LoginResponse?.ProjectVM | searchpipe:'Project':search.value"> 
        <label class="checkbox-label" > 
         <input type="checkbox" class="dropdown-checkbox" [(ngModel)]="project.isChecked" (change)="addProject(project)" > 
         <span>{{project.Project}}</span> 
        </label> 
       </li> 
      </ul> 
     </div> 
     <div class="bottom-data" [hidden]="!showMenu"> 
      <label><input type="checkbox" id="bottom-checkbox"></label> 
     </div> 
    </div> 

Antwort

4

würde ich eine Kontrolle über die Verwendung „aktivieren/deaktivieren alle“ Checkbox benachrichtigt werden, wenn der Benutzer aktiviert bzw. deaktiviert:

<input type="checkbox" [ngFormControl]="allCtrl"/> 

allCtrl im Konstruktor der Komponente initialisiert wird. Dann könnten Sie sich registrieren gegen die valueChanges Eigenschaft dieser Kontrolle werden von Updates informiert und aktualisiert die isChecked Felder entsprechend: „unerwartetes Token“

constructor() { 
    this.allCtrl = new Control(); 
    this.allCtrl.valueChanges.subscribe(
    (val) => { 
     this.projectdata.LoginResponse.ProjectVM.forEach((project) => { 
     project.isChecked = val; 
     }); 
    }); 
} 
+0

ich einen Fehler bekam sagen Nach sorgfältiger Prüfung fragte ich mich, ob der elvis-Operator arbeitete, und das tat es nicht. Der elvis-Operator wurde aus dem Konstruktor entfernt und es funktioniert jetzt großartig :) Würde es Ihnen etwas ausmachen, Ihre Antwort zu bearbeiten, wenn dieser Post in der Zukunft nachgeschlagen wird, wird der Operator nicht werfen? Dann kann ich deine Antwort als die richtige markieren. – JanVanHaudt

+1

Oh mein Gott. Es ist ein Tippfehler. Der Elvis-Operator kann nur mit Ausdrücken in der Ansicht verwendet werden, die nicht im TypeScript-Code enthalten sind ... Danke, dass Sie darauf hingewiesen haben! Ich habe meine Antwort aktualisiert. –

+0

Woher kommt 'Control'? – avoliva

Verwandte Themen