2017-04-24 82 views
1

我使用angular2 ngmodel下拉,我的观点是没有更新的时候我改变模型下拉值未ngmodel使用绑定angular2

//intialize the variable 
 
addplanhours:any[]; 
 
    
 
this.addplanhours=[{name: '--sel--',value:0}, {name: 'Head start',value:1}, {name: 'Nice going',value:2},{name: 'On Track',value:3},{name: 'Keep On trying',value:4},{name: 'Making process',value:5},{name: 'Wrapping up',value:6}]; 
 
    
 
//function of electrifyonchange 
 
electrifyonChange(value) { 
 
for(var i=0;i<=this.addplanhours.length;i++){ 
 
    this.electrify= value; 
 
    console.log("new value",this.electrify); 
 
}
<span> 
 
        <span class="addnotefont1">Electrifying</span> 
 
        <select class="addplanpicker"[(ngModel)]="electrify" (ngModelChange)="electrifyonChange($event)"> 
 
       <option *ngFor="let a of addplanhours" [ngValue]="a.value">{{a.name}} </option> 
 
      </select> 
 
       </span>

+0

这是有点不清楚(至少对我来说),因为这里发生了什么。你在哪里改变模型,并在视图中的哪个地方不反映变化? – Alex

+0

+0

好的......我以为你会在* ngFor之外设置'electrify',显然不是,但是这给我的第二个问题带来了什么,它在哪里不会更新你的看法? – Alex

回答

0

[ngValue]可以容纳任何种类的对象或价值,所以你可以使用[compareWith]函数来保持下拉状态,因为你正在使用的对象:

<select class="addplanpicker" [(ngModel)]="electrify" [compareWith]="isplanHourSelected"> 
    <option *ngFor="let a of addplanhours" [ngValue]="a">{{a.name}} </option> 
</select> 


isplanHourSelected(o1, o2) { 
    return o1 && o2 && o1.value == o2.value 
} 

现在您将获得electrify所选对象,如果您想在通电中选择任何值时运行特定事件,则可以使用OnChange策略。

+0

未处理的承诺拒绝:模板解析错误: 无法绑定到'compareWith',因为它不是'select'的已知属性。 (“t1”>正在通电