2017-10-19 82 views
-1

我想在组件类的下拉列表中使用选定的值。 当从下拉列表中选择一个值时,我使用ngModel存储这个值,但它不起作用,也尝试了另一种方法,即我触发了一个事件函数并将选定的值作为参数传递,但这种方法也不起作用。在下拉列表中选择的值不起作用Angular

<select [(ngModel)]="selectedControl" class="form-control" (click)="onSelection($event)"> 
      <option *ngFor="let control of controlArray; let i=index" 
      [value]="control">{{controlArray[i].name}}</option>            
</select> 

当我输出在控制台上选择的值,它不显示,这里是组件类代码:

onSelection(control){ 
    console.log(typeof(control)) 
    console.log(control.target.value) 
    } 

请帮助。

+0

您从不记录选定的值。您记录传递给该方法的事件($ event)。不要将事件传递给方法,只需登录'this.selectedControl',因为这与ngModel绑定在一起。此外,该事件不应该(点击),但(改变)。 –

+0

我之前也试过这个解决方案,但是通过记录this.selectedControl“[object Object]”显示输出而不是选定的值。 –

+3

您可能需要绑定到'[ngValue]'而不是'[value]',因为native属性只使用字符串。 – rinukkusu

回答

0

你应该使用change事件,不click

<select [(ngModel)]="selectedControl" class="form-control" (change)="onSelection()"> 
    <option *ngFor="let control of controlArray; let i=index" 
      [ngValue]="control">{{controlArray[i].name}}</option> 
</select> 

您也应该检查selectedControl当前选择的值。

onSelection(){ 
    console.log(this.selectedControl) 
} 

最后一件事 - 你应该把有一个标值,如果你想要做这样或使用ngValue代替。

+0

我在概念上不是很清楚,请你介绍一下这个概念的一些数据链接。 - –

+0

你究竟是什么意思?点击vs更改事件?或ngValue? –

+0

我不清楚ngValue和值绑定之间。 –