2016-02-19 9 views
13

私は選択したDropDownListにngForを使用しようとしています。ドロップダウンにあるオプションをロードしました。Angular2 * ngFor選択リストでは、オブジェクトからの文字列に基づいてアクティブに設定します

あなたはここを参照してくださいコード:

このコードに基づいて
<div class="column small-12 large-2"> 
    <label class="sbw_light">Title:</label><br /> 
    <select [(ngModel)]="passenger.Title"> 
     <option *ngFor="#title of titleArray" [value]="title.Value">{{title.Text}}</option> 
    </select> 
</div> 

、それはこの画像のように見えるのドロップダウンを生成します。

enter image description here

問題は、私は、文字列「ミスター」や「ミセス」のいずれかであるpassenger.Titleに基づいて、アクティブ一つとして、そのうちの一つ「ミスターやミセス」に設定したいということです。

私はここで間違っているのを見るのに役立ちますか?

答えて

30

これは私がattr.部分が必要であるかわからない

<option *ngFor="let title of titleArray" 
    [value]="title.Value" 
    [attr.selected]="passenger.Title==title.Text ? true : null"> 
    {{title.Text}} 
</option> 

動作するはずです。

+1

感謝。いい答えだ! – Vnuuk

5

this demo fiddleで確認してください。コードのドロップダウンやデフォルト値を変更してください。

passenger.Titleの値をtitle.Valueに設定すると効果があります。

ビュー:使用

<select [(ngModel)]="passenger.Title"> 
    <option *ngFor="let title of titleArray" [value]="title.Value"> 
     {{title.Text}} 
    </option> 
</select> 

活字体:

class Passenger { 
    constructor(public Title: string) { }; 
} 
class ValueAndText { 
    constructor(public Value: string, public Text: string) { } 
} 

... 
export class AppComponent { 
    passenger: Passenger = new Passenger("Lord"); 

    titleArray: ValueAndText[] = [new ValueAndText("Mister", "Mister-Text"), 
            new ValueAndText("Lord", "Lord-Text")]; 

} 
関連する問題