私の ionic2 アプリで、Ionic Native に含まれていない Cordova プラグインを使用しようとしました。ここで Josh Morony によって書かれた記事を参照しました: https://www.joshmorony.com/using-cordova-plugins-in-ionic-2-with-ionic-native/。すべて正常に動作します (コードは問題なくコンパイル、実行されます)。
このプラグインは Ionic Native でサポートされていないため、約束も観察もできず、応答に時間がかかります。このプラグインは値を返しました。プラグインから返された値を自分のビューに割り当てようとしましたが、失敗しました (エラー メッセージ: TypeError: null はオブジェクトではありません ('this.name=t' を評価しています))。
PS:アラート、アラート(応答)に応答を入れるだけで、返された値が正しく表示されます。
以下は私のコードです。ここにいる誰かが私を助けてくれますか? どうもありがとうございました :-)
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { Platform } from 'ionic-angular';
declare var airwatch;
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
name: string = null;
constructor(public navCtrl: NavController, platform: Platform) {
// code starts here
platform.ready().then(() => {
(<any>window).plugins.airwatch.username(function(response){
alert(response);// this alert works! it will correctly show the response in text mode (the response is text)
this.name = response; // the line failed, it said: cannot insert null to this.name but I thought the response is text and it works when I use alert or console.log
}, function(error){
this.name = error;
});
});
}
}
コードをionViewDidLoad() {}にも配置しようとしましたが、それでも機能しませんでした。同じエラー メッセージ: TypeError: null はオブジェクトではありません ('this.name=t' を評価しています)
NgZone を試みましたが、うまくいきませんでした。
戻り値が角度のある「スコープ」にないためですか?