ionic3中的角度动画在收到android自定义cordova插件对按下按钮的响应后停止工作

ionic3中的角度动画在收到android自定义cordova插件对按下按钮的响应后停止工作,cordova,ionic3,cordova-plugins,Cordova,Ionic3,Cordova Plugins,我现在正在开发一个定制的cordova插件Android,用于Ionic。插件使用以下代码将侦听器添加到WebView: this.callbackContext = callbackContext;//store this for later this.webView.getView().setOnKeyListener(this);//add listener PluginResult pluginResult = new PluginResu

我现在正在开发一个定制的cordova插件Android,用于Ionic。插件使用以下代码将侦听器添加到WebView:

        this.callbackContext = callbackContext;//store this for later
        this.webView.getView().setOnKeyListener(this);//add listener
        PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); // send no result cause the result will be sent by the listener
        pluginResult.setKeepCallback(true);
        this.callbackContext.sendPluginResult(pluginResult);
然后我用以下方式覆盖侦听器:

@凌驾 公共布尔onKeyView视图,int-keyCode,KeyEvent-KeyEvent{ JSONObject结果=新的JSONObject; 如果keyEvent.getAction==keyEvent.ACTION\u向下{ 如果keyCode==KeyEvent.keyCode_VOLUME|u UP | | keyCode==KeyEvent.keyCode_VOLUME|u DOWN { 试一试{ 结果。按下按钮,按下按钮; }捕获JSONException错误{ } } PluginResult pr=新PluginResultPluginResult.Status.OK,结果; pr.setKeepCallbackkeepCallback; this.callbackContext.sendPluginResultpr; 返回false; } 返回true;
} 很可能您需要强制执行detectChanges,或者在ngZone内运行它

constructor(private ref: ChangeDetectorRef){} 

ngOnInit() {
  cordova.plugins.buttonListener.listenButtonClick(data => {
    this.buttonState = 'big';
    this.ref.detectChanges();    
  }, err => { });
}
或使用ngZone:

constructor(private ngZone: NgZone){} 

ngOnInit() {
  this.ngZone.run(() => {
    cordova.plugins.buttonListener.listenButtonClick(data => {
      this.buttonState = 'big';  
     }, err => { });
  });
}

你能添加你是如何触发动画的吗?你能添加插件回调是如何设置变量buttonState的吗?是的,我在上面更新了谢谢,我会尽快尝试。问题:我从来没有手动触发过变更检测器,为什么在这种情况下需要这样做?因为变更是在外部完成的。这是科尔多瓦公司的回电,所以变化超出了范围。因此Angular需要知道某些内容已被更改,因此您可以调用DetectChanges。这是唯一需要更改的内容:在回调中调用ngZone.run,因为更改应该在事件到达后触发,而不是在设置侦听器时触发。