2016-09-26 3 views
0

Ich verwende Angular2 und ngSemantic Bibliothek. Ich habe ein Formular, und hier ist mein Code:ngSemantic Auswahl bindet nicht an Objekt

Template-Datei:

<div class="container"> 
    <h1>My first form</h1> 
    <form class="ui form" [formGroup]="myForm"> 
     <sm-loader [complete]="!submitted" class="inverted" text="Loading..."></sm-loader> 

     <div class="field"> 
      <sm-select [(model)]="firstSelect" [control]="myForm.controls.category" placeholder="Search..." class="fluid search"> 
       <option *ngFor="let item of itemslist" [value]="item">{{item.name}}</option> 
      </sm-select> 
     </div> 

     <div class="field"> 
      <sm-select placeholder="Search..." class="fluid search"> 
       <option *ngFor="let i of firstSelect?.items">{{i}}</option> 
      </sm-select> 
     </div> 

     <sm-button (click)="onSubmit()" [disabled]="!myForm.valid" class="primary">Login</sm-button> 
    </form> 
</div> 

Component-Datei:

itemslist: any = [ 
    { name: 'first', items: ['one', 'two', 'three']}, 
    { name: 'second', items: ['one', 'two', 'three']}, 
    { name: 'third', items: ['one', 'two', 'three']} 
]; 

constructor(private dataService: DataService, fb: FormBuilder) { 
    this.myForm = fb.group({ 
     'category': [], 
     'subcategory': [], 
     'name': [], 
     'email': [] 
    }); 
} 

Die Schleife in der zweiten Auswahl funktioniert nicht, weil firstSelect Ergebnisse eine sein Zeichenfolge anstelle von Object. Vielleicht passiert das, weil select/option nur mit string oder number umgehen.

Wie kann ich das lösen?

Antwort

0

{{...}} macht String-Interpolation. Verwenden Sie es nicht, wenn Sie eine Objektinstanz übergeben möchten.

Für Objektbindung Verwendung anstelle

[value]="item" 
+0

Ja, ich weiß. Ich habe meine Frage bearbeitet, es war ein Tippfehler. Entschuldigung und danke für deine Antwort. Wie auch immer, es funktioniert nicht. – smartmouse

+1

Ich weiß nicht 'sm-select', aber für die normale Auswahl müssen Sie' [ngValue] = "..." 'beim Binden von Objekten anstelle von Strings auf dem' ' Element verwenden. –

+0

Ich weiß. Wenn 'select' und' ngValue' auf 'option' verwendet wird, funktioniert es :( – smartmouse

Verwandte Themen