我已经设置了一个提供程序,其中包含一个检查存储中的值的函数,如果没有设置将强制用户在使用该应用程序之前设置它。
所以,在每个页面上,在构造函数中我在提供程序中调用我的checkToken()函数,如果没有设置我想做
this.navCtl.push(TokenPage)
但是我收到了这个错误
Error: Uncaught (in promise): Error: StaticInjectorError[NavController]:
StaticInjectorError[NavController]:
NullInjectorError: No provider for NavController!
这是我的提供者中的构造函数
constructor(private inAppBrowser: InAppBrowser, private storage:Storage, private navCtl:NavController) {
console.log('Hello SharedProvider Provider');
this.live = false;
}
这是检查我的存储中的值的函数。
checkLogin(){
var promise = new Promise((resolve, reject)=>{
this.storage.get("virtualToken").then((val)=>{
this.virtualToken = val;
});
this.storage.get("liveToken").then((val)=>{
this.liveToken = val;
});
});
if((this.virtualToken == null || this.virtualToken == '') && (this.liveToken == null || this.liveToken == '')){
console.log("Result of checkLogin" + this.virtualToken);
this.navCtl.push(TokenPage);
}
}
答案 0 :(得分:0)
这可能是因为NavController未包含在Ionic核心模块中,因此在服务/提供商中不可用。 您可以尝试这种解决方法,但即使我在我的提供商中使用它来访问navcontroller它也不理想: -
constructor(protected app: App) {...
....
}
get navCtrl(): NavController {
return this.app.getRootNav();
}
然后您可以访问服务中的任何位置的navCtrl:
this.navCtl.push(TokenPage);