2017-06-14 68 views
0

我有这样Angular2检测的OnChange

<div class="form-group"> 
    <label for="government">Provinsi</label> 
    <select class="form-control" name="provinsi" formControlName="provinsi"> 
     <option *ngFor="let item of province" value="{{item.id}}" (ngModelChange)="onChange($event)">{{item.name}}</option> 
    </select> 
    </div> 
    <div class="form-group"> 
    <label for="government">Kabupaten/Kota</label> 
    <select class="form-control" name="kokab" formControlName="kokab"> 
     <option *ngFor="let list of regencieslist" value="{{list.id}}" selected="selected">{{list.name}}</option> 
    </select> 
    </div> 

我要的是angular2代码选择选项。如果我选择Provinsi选择表单的选项,它将触发一些方法,其中有值。如何触发与价值变化的方法传递给它

onChange(id){ 
     this.servicedev.getregencies(id).subscribe(
     regencies => this.regencieslist = regencies, 
     error => error 
    ) 
    } 

我想触发的onchange方法,并传递从provinsi选择的id的onChange方法的价值。

回答

0

ngModelChangengModel一起使用,您可以在其中指定如何处理绑定属性的更改。看起来你的问题很简单,你需要change事件,从html中选择:

<select 
    class="form-control" 
    name="provinsi" 
    formControlName="provinsi" 
    (change)="onChange($event)"> 
    <option *ngFor="let item of province" value="{{item.id}}" >{{item.name}}</option> 
</select> 

onChange(event){ 
    if(event.target.value === /*something*/) { 
    this.servicedev.getregencies(id).subscribe(
     regencies => this.regencieslist = regencies, 
     error => error) 
    } 
} 
+0

哦呀。我很抱歉,它不适用于ng模型。 但我不能得到传递给onchange的价值。如何解决这个问题 – dedypuji

+0

你实际上可以直接将值传递给事件处理函数:'(click)=“onChange(item.id)”',意思是不需要检查'element.target'上的值。 – maddockst

+0

@maddockst当然你也可以做到,但是很想把事件作为默认的js来传递:) – Fals