2016-11-27 9 views
1

Ich muss anmelden und ich brauche Option auswählen. Kann ich jemandem helfen, wo ich Fehler mache? Es ist mein CodeWählen Sie in Angular2

@Component({ 
    moduleId: module.id, 
    selector: 'tenants', 
    template:`<select name="repeatSelect" id="repeatSelect" [(ngModel)]="model.tenant"> 
     <option *ngFor="let tenant of tenants" value="{{tenant.abbr}}">{{tenant.name}}</option> 
    </select>` 
}) 



export class TenantComponent implements OnInit { 
    model: any = {}; 
    loading = false; 
    error = ''; 
    public tenants: Tenant[]; 

    constructor(

     private tenantService: TenantService) { } 

    setTenant(){ 
     //if you're on older versions of ES, use for-in instead 
     var tenant = this.tenants.find(t => t.name); 

     if(tenant) { this.model.tenant = tenant; } 
    } 

    ngOnInit() { 
     this.loading = true; 

     this.tenantService.tenants() 
      .subscribe((result : Tenant[]) => { 
       this.tenants = result; 
      }); 
    } 
} 

und dann füge ich in Log-Vorlage.

Wenn ich eine der Optionen wähle. In HTML der Seite ist enter image description here

nachdem ich Option ausgewählt und Anfrage für Login gesendet. Es funktioniert nicht

Dank

+0

Objektwerte zu verwenden, sollten Sie lieber verwenden: '[Wert] = "tenant.abbr"' statt 'value =“ {{pentent.abbr}} "' – Maxime

+0

Das sollte egal sein, wenn 'tenant.abbr' ein Zeichenfolgenwert ist. –

Antwort

0
setTenant(){ 
     //if you're on older versions of ES, use for-in instead 
     var tenant = this.tenants.find(t => t.name); 

     if(tenant) { this.model.tenant = tenant; } 
    } 

Dieser Teil des Codes sieht sehr seltsam.

this.tenants.find(t => t.name) fehlt einige boolesche Ausdruck. Sie müssen t.name mit dem von Ihnen gewählten Namen vergleichen, z. B. t.name == selectedName. Auf diese Weise wird der Mieter immer null sein, weil find einige boolesche Ausdrücke erwartet, um etwas zu finden!

+0

Ich verwende diesen Teil des Codes nicht. Ich habe vergessen, es zu löschen – Gioli

+0

Die uns fehlen einige Informationen. Was passiert mit deinem Model.tenant? Ist es null, wenn Sie es protokollieren? Was passiert nach Auswahl des Wertes in Ihrer Login-Vorlage? – lastWhisper

+0

wo soll ich es anmelden? Ich habe die Methode setTenant() gelöscht. Mein Login hat einen Benutzernamen, ein Passwort und ein Attribut vom Mieter Mieter (es ist ein Objekt) – Gioli

0

[(ngModel)]="model.tenant" bezieht ein Tenant Objekt, sondern value="{{tenant.abbr}}" in eine Zeichenfolge eingegeben werden.

ich denke, es eher sein sollte

template:` 
<select name="repeatSelect" id="repeatSelect" [(ngModel)]="model.tenant"> 
    <option *ngFor="let tenant of tenants" [ngValue]="tenant">{{tenant.name}}</option> 
</select>` 

[ngValue] ermöglicht mit <option>

+0

in login.service.ts protokolliert immer noch Mieter als definiert – Gioli

+0

Schwer zu sagen, ohne weitere Informationen. Kannst du in einem Plunker reproduzieren? –