Angular b/w差异(输入)和(离子变化)事件-离子3

Angular b/w差异(输入)和(离子变化)事件-离子3,angular,ionic-framework,ionic2,ionic3,Angular,Ionic Framework,Ionic2,Ionic3,我试图在10个字符后调用web服务,但我注意到当我使用input=onInput时,它调用了两次,我不知道为什么 经过几次搜索,我将其更改为ionChange=onInput,但它工作正常。 我的问题是: 1:这两个事件的区别是什么? 2:在ionic-3中使用event.stopPropagation可以防止两次调用 html: ionChange是一个角事件发射器,由Ionic用于处理大多数自定义组件中的输入更改。它在其中定义为 输入就是可以与离子元素以及基本html输入元素一起使用的DOM

我试图在10个字符后调用web服务,但我注意到当我使用input=onInput时,它调用了两次,我不知道为什么

经过几次搜索,我将其更改为ionChange=onInput,但它工作正常。 我的问题是:

1:这两个事件的区别是什么? 2:在ionic-3中使用event.stopPropagation可以防止两次调用

html:

ionChange是一个角事件发射器,由Ionic用于处理大多数自定义组件中的输入更改。它在其中定义为

输入就是可以与离子元素以及基本html输入元素一起使用的DOM

与输入事件相比,ionChange在发出之前有许多检查,这可能会阻止它在值更改时多次触发

在ionic-3中使用event.stopPropagation可以防止两次调用

是的,您可以传递任何参数,包括html$event并调用其函数

<ion-input type="text" [(ngModel)]='time' 
   (ionChange)='onInput($event)'>
</ion-input>
onInput() {
   ## call service
}
@Output() ionChange: EventEmitter<BaseInput<T>> = new EventEmitter<BaseInput<T>>(); 
//...
_fireIonChange() {
    if (this._init) {
      this._debouncer.debounce(() => {
        assert(NgZone.isInAngularZone(), 'IonChange: should be zoned');
        this.ionChange.emit(this._inputChangeEvent());
        this._initModel = true;
      });
    }
  }