在我的app.component.ts文件中,我有一个代码,如果用户点击FCM通知,它将把用户发送到另一个页面 代码是这样的:
this.fcm.listenToNotifications().subscribe(async(notification) => {
if (notification.tap) {
const pages = [
{page: Page1},
{page: Page1Subpage, params: {...}}
];
this.navCtrl.setPages(pages);
this.navCtrl.parent.select(1);
}
执行通知时,在Xcode编辑器中看到以下错误:
2019-01-17 16:55:13.230990+0200 Adservio[2103:800067] ERROR: Unhandled Promise rejection: null is not an object (evaluating 'this.navCtrl.setPages') ; Zone: <root> ; Task: Promise.then ; Value: TypeError: null is not an object (evaluating 'this.navCtrl.setPages') http://localhost:8080/var/containers/Bundle/Application/9301607C-7904-4404-B00D-FE8D9E7EED17/Adservio.app/www/build/main.js:1:1380986
有人知道为什么吗?
答案 0 :(得分:0)
在您的根组件中,您应该使用Nav而不是NavController。在这里查看更多: https://ionicframework.com/docs/api/navigation/NavController/#navigating-from-the-root-component
您不能注入NavController,因为任何作为导航控制器的组件都是根组件的子代,因此它们无法被注入。
还要检查参考应用的实现: https://github.com/ionic-team/ionic-conference-app/blob/v3/src/app/app.component.ts
答案 1 :(得分:0)
这里与documentation相关:
如果要控制从您的根应用程序组件导航,该怎么办? 您不能注入 NavController ,因为任何 导航控制器是根组件的子代,因此它们 无法被注入。
但是您可以使用 Nav
import { Nav } from 'ionic-angular';
//....
export class MyApp {
@ViewChild(Nav) nav: Nav;
//...
//And inside your function
//..
this.nav.push('Page1');
//..