获取当前打开的详细信息页面实例的ID

时间:2017-07-06 11:26:53

标签: angularjs ionic-framework ionic2 ionic3

在应用程序打开时,我的用户会看到我的Ionic3 / AngularJS移动应用程序中如何处理PushNotifications?我可以识别用户当前所在的页面,我可以通过以下方式完成:

if ( (this.navCtrl.getActive().component === Page1) ){
    // user is currently on Page1
    // handle push notification
}

不幸的是,这还不够。 Page1是一个详细信息页面,显示项目的详细信息。我们假设有3个项目:Banana(id: 1),Apple(id: 2)和Orange(id: 3)。

我需要知道,用户当前是否正在查看Page1 for item1,item2或item3。我想做这样的事情:

if ( (this.navCtrl.getActive().component === Page1 && data.itemID === "page1-itemId") ){
    // data.itemID is the ID i get from the push notification
    // "page1-itemId" is what I desire to get somehow
}

我怎样才能了解page1-itemId

2 个答案:

答案 0 :(得分:0)

Yo可以执行类似导航到Detail组件的组件。

this.navCtrl.push(DetailPage, {
  id: "1",
});

然后在Detail页面中读取ID为param的内容。不要忘记在构造函数中导入和注入Navparams

import { NavParams } from 'ionic-angular';

constructor(private navParams: NavParams) {
  let id = navParams.get('id');
}

来源Ionic NavController docs

答案 1 :(得分:0)

以防万一,任何人都会遇到同样的事情:我决定将事件用于此目的。

每当打开Page1时,我都会发布一个这样的事件:

<强> Page1.ts

constructor(...
     public events: Events
) {
     // read NavParams
     this.itemId= this.navParams.get('itemId');

     // publish event with current itemId
     this.events.publish("Page1:opened",this.itemId);
}

然后我在 app.component.ts

中听这个事件
// Listen to Opening of Confirm-Page
this.events.subscribe('Page1:opened', itemId=> {
   this.page1ItemId= itemId;
});

...并将this.page1ItemIdthis.nav.getActive().component === Page1结合使用,以我想要的方式处理通知。