Onclick Pushnotifications时重定向页面

时间:2017-03-13 08:57:01

标签: ionic2

我正在使用FCM PLugin Ionic 2

在我的应用组件

下面
   constructor(public menu1: MenuController,public alertCtrl:AlertController,public platform: Platform,public authservice:Authservice) {

      this.initializeApp();

  }


initializeApp() {

    this.platform.ready().then(() => {
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      StatusBar.styleDefault();
      Splashscreen.hide();

      //Push Notifications

      if(typeof(FCMPlugin) !== "undefined")
      {
        FCMPlugin.getToken(function(t){
          console.log("Use this token for sending device specific messages\nToken: " + t);
        }, function(e){
          console.log("Uh-Oh!\n"+e);
        });
         FCMPlugin.onNotification(function(d){
          if(d.wasTapped){  
                            console.log(d);
            var nav:NavController = this.app.getComponent("nav");
            this.nav = nav;
            nav.setRoot(MycomplaintsPage);
} else {

            console.log("Push Notification", d);
            console.log("you have new notifications");
          }
        }, function(msg){
                      }, function(err){
          console.log("Arf, no good mate... " + err);
        });
      }

}

它的工作非常完美。但是点击通知页面无法重定向。

我收到此错误

未捕获的TypeError:无法读取属性' getComponent'未定义的。

如何解决此问题。

请告诉我, 感谢

1 个答案:

答案 0 :(得分:0)

如果使用常规函数,this对象会发生更改,即它属于函数而非类,因此this.app也未定义。 Arrow functions ()=>{}未定义this,而使用外this。 使用箭头函数进行回调

 FCMPlugin.onNotification((d)=>{
          if(d.wasTapped){  
                            console.log(d);
            var nav:NavController = this.app.getComponent("nav");
            this.nav = nav;
            nav.setRoot(MycomplaintsPage);
            //...
         });

或者在通话前设置self=this并使用self

let self = this.//declare here

 FCMPlugin.onNotification(function(d){
          if(d.wasTapped){  
                            console.log(d);
            var nav:NavController = self.app.getComponent("nav");//use here
            this.nav = nav;
            nav.setRoot(MycomplaintsPage);
            //...
         });