Angular2 * ngFor在选择列表中,根据来自对象的字符串设置活动

问题描述 投票:28回答:2

我正在尝试在我选择的DropDownList上使用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的活跃版,这是一个字符串“Mr”或“Mrs”。

任何人都可以帮忙看看我在这里做错了什么?

angular typescript select ngfor
2个回答
65
投票

这应该工作

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

我不确定attr.部分是否必要。


10
投票

this demo fiddle中查看,继续并更改代码中的下拉列表或默认值。

使用等于passenger.Title的值设置title.Value应该有效。

视图:

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

使用TypeScript:

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")];

}
© www.soinside.com 2019 - 2024. All rights reserved.