angular2从选择列表中选择选项

angular2从选择列表中选择选项,angular,Angular,我想从我的选项列表中显示默认选项“全部”,但它不起作用 filter.component.ts @Output()onFilter=neweventemitter(); 状态选项=[ {value:'active',viewValue:'active'}, {value:'inactive',viewValue:'inactive'}, {value:'pending',viewValue:'pending'} ]; onStatusChange(val){ 如果(val==“”){ this.

我想从我的选项列表中显示默认选项“全部”,但它不起作用

filter.component.ts

@Output()onFilter=neweventemitter();
状态选项=[
{value:'active',viewValue:'active'},
{value:'inactive',viewValue:'inactive'},
{value:'pending',viewValue:'pending'}
];
onStatusChange(val){
如果(val==“”){
this.onFilter.emit(“”);
}
否则{
emit(`?status=${val}`);
}
}
filter.component.html


全部的
{{status.viewValue}}
使用
[ngModel]=“selected”
而不是
selected=“selected”



如果组件字段
selected
引用了
statusOptions

中的所选值,则它不起作用,使用上面的代码而不是selected=“selected”您为
selected
分配了什么?我想你需要
选择:any=''
,因为最初要选择的元素不是由
*ngFor
创建的,并且具有值```。实际上,它应该是
value=“”
[value]=“”
或选择
的:任意;//没有=''
(初始化为
null
)All>>您的意思是这样吗?此部分
selected=“selected:any=”
在模板中是多余的。这段代码是要添加到components类中的。是的,这段代码应该可以工作。阅读评论,我发现您错误地使用了
(ngModel)
而不是Günther建议的->
[ngModel]
只需从您的选项中删除
selected=“selected”
,然后使用Günther建议的代码:)
@Output() onFilter = new EventEmitter<String>();

statusOptions = [
 { value: 'active', viewValue: 'Active' },
 { value: 'inactive', viewValue: 'Inactive' },
 { value: 'pending', viewValue: 'Pending' }
 ];

onStatusChange(val) {
  if (val === "") {
   this.onFilter.emit("");
 }
  else {
    this.onFilter.emit(`?status=${val}`);
  }
 }
<form class="filter-form">
  <md-select (ngModelChange)="onStatusChange($event)" name="filter">
    <md-option [value]="" selected="selected">All</md-option>
    <md-option [value]="status.value" *ngFor="let status of statusOptions">
      {{status.viewValue}}
    </md-option>
  </md-select>
</form>
<md-select [ngModel]="selected" (ngModelChange)="onStatusChange($event)" name="filter">