2017-01-12 188 views
3

我有以下下拉菜單。我想將所有患者設置爲默認值。Angular 2 - 默認硬編碼時在下拉列表中設置默認值

<select [(ngModel)]="searchModel.careprovider"> 
     <option [value]="0">All Pateints</option> 
     <option *ngFor="let user of practiceUsers" [value]="user._id.$oid"> 
     {{user.dn}} 
     </option> 
    </select> 

我的模式是這樣聲明:

searchModel: any = { location: null, practice: null, name: '', careProvider: 0 }; 

我設置practiceUsers這樣:

this._practice.getUsers(this.searchModel.practice).subscribe(result => { 
    this.practiceUsers = result; 
    this.searchModel.careProvider = 0; 
    }); 

無論我如何改變它,我永遠只是得到了一個空白的選擇,因爲默認。我已經嘗試在加載後向this.practiceUsers陣列中添加對象,然後設置模型值。我已經嘗試設置模型值,使用和不使用引號來查看數字或字符串是否有所不同。我嘗試的所有東西仍然會導致默認設置爲空白選項。

在Angular 1中,我會使用ng-options,但Angular 2不再提供此功能,並且我找到的每個示例都顯示使用ngFor作爲下拉菜單。

回答

3

對象屬性區分大小寫,在您的對象中,屬性名爲careProvider,但在您的模板中,您使用的小寫字母爲searchModel.careproviderp。我認爲你還必須使用NgValue指令而不是value,因爲你使用的是NgModel指令。所以,這應該工作:

<select [(ngModel)]="searchModel.careProvider"> 
    <option [ngValue]="0">All Pateints</option> 
    <option *ngFor="let user of practiceUsers" [ngValue]="user._id.$oid"> 
    {{user.dn}} 
    </option> 
</select> 
+1

是不是總是這樣?你只需要查看代碼就可以發現它是一種簡單的類型,會導致所有問題。 – Jhorra

+0

@Jhorra我完全感覺你。 :-) –

0

嘗試使用[selected]屬性。我解決了類似的問題是這樣的:

<select> 
    <option *ngFor="let option of options" value="{{option.id}}" [selected]="option === selectedOption"> 
     {{option.name}} 
    </option> 
</select> 

我希望這有助於有點

0
<select class="form-control" id="policeid_country_id" name="policeid_country_id" formControlName="policeid_country_id"> 
    <option [ngValue]="null">Select</option> 
    <option [ngValue]="country.id" *ngFor="let country of countries">{{country.country}}</option> 
</select>