2017-05-09 11 views
3

Ich habe ein Dropdown-Menü mit Dropdown-Liste mit einer Liste von Benutzernamen. Ich möchte, dass die lead.id ausgewählt wird. Wie kann ich das erreichen?Eckiges Material - md-select - ausgewählter Gegenstand im Dropdown

<md-select formControlName="lead" ng-model="plan.lead.id" id="lead" style="min-width: 200px;"> 
        <md-option *ngFor="let lead of users" [value]="lead.id"> 
         {{lead.displayName}} 
        </md-option> 
       </md-select> 

getLead() { 
     this.service.getLead(this.id) 
      .subscribe(res => { 
       this.plan = res; 
       console.log("lead: " + this.plan.lead);  
      }); 
    } 
+0

Möchten Sie eine Option über den Code auswählen? Oder die ID einer Option erhalten, nachdem sie angeklickt wurde? – Ploppy

Antwort

2

Sie verwenden ng-model, die AngularJS-Syntax ist. Aber Sie müssen hier nicht ngModel verwenden, da Sie eine reaktive Form (??) haben, und Sie können die formcontrol mit dem Wert, den Sie erhalten haben, festlegen. Also, wenn Sie Ihre plan erhalten haben, können Sie den Wert einstellen:

this.myForm.get('lead').setValue(this.plan.lead.id) 

Ihre Vorlage:

<md-select formControlName="lead" id="lead" style="min-width: 200px;"> 
    <md-option *ngFor="let lead of users" [value]="lead.id"> 
     {{lead.displayName}} 
</md-option> 
</md-select> 

Warten Sie ein paar Sekunden und in der Plunker wird der Wert eingestellt werden.

+0

Das ist, was ich vermisst wurde. Sobald ich dies auf die Komponente eingestellt habe, hat es wunderbar funktioniert. this.myForm.get ('führen'). SetValue (this.plan.lead.id) – Jay

+0

Großartig! Froh zu hören! Als Nebenbemerkung ist ngModel völlig unnötig (und entmutigt), mit reaktiven Formen zu verwenden, die formcontrols ersetzt das in diesem Fall und sollte verwendet werden, um die Werte zu setzen :) Weitere Funktionen, die Sie an Formularsteuerelementen ausführen können, haben Sie hier: https://angular.io/docs/ts/latest/api/forms/index/FormControl-class.html Kann nützlich sein, wenn Sie zB Wert für ein bestimmtes Formular-Steuerelement zurücksetzen müssen, also überprüfen Sie diese Seite :) Außerdem, haben Sie eine großartige Tag/Abend/Morgen und Happy Coding! :) – Alex

0

Als erstes verwenden Sie reaktive Formulare?

Wenn ja, trotz der Tatsache, dass Sie eine falsche Syntax in ng-model verwenden (es sollte [(ngModel)] sein), sollten Sie es nicht mit reaktiven Formen verwenden.

Verwenden Sie nur oder [formControl].

+0

Ich werde hinzufügen, dass eine gute Erinnerung für die ngModel-Syntax ist "Banane in einer Box", werden Sie es wahrscheinlich nicht vergessen: D – Ploppy