Angular Navparam传递的数据在Ionic2中不可用

Angular Navparam传递的数据在Ionic2中不可用,angular,typescript,ionic2,ionic3,Angular,Typescript,Ionic2,Ionic3,在登录页面中,应用程序将获得UDI和Token,如果登录/注册成功,它将传递到MapPage: if (Token != "-1") { this.navCtrl.push(MapPage, {UDI: this.UDI, Token: Token}) this.navCtrl.setRoot(MapPage); this.na

在登录页面中,应用程序将获得
UDI
Token
,如果登录/注册成功,它将传递到MapPage:

if (Token != "-1")
                   {                  
                this.navCtrl.push(MapPage, {UDI: this.UDI, Token: Token})
                this.navCtrl.setRoot(MapPage);
                this.navCtrl.popToRoot;
poptroot
之前的构造方法中激发
console.log(this.UDI,this.Token)显示它们的值,但之后它们未定义

this.UDI=this.params.get('UDI');
this.Token=this.params.get('Token');    
console.log(this.UDI, this.Token);
更新1:结果

正如您在进入映射页面之前所看到的,它显示了正确传递的值

map.ts:39 2NYIRWI0N8Z6HW2M3HWR XWRU441NHH0B9GSHVC3P
但在导航根页面更改后

map.ts:39 undefined undefined

您的键看起来像变量,而不是字符串文字。因此,您的键和值都是UDI和令牌的值

用引号试试

        this.navCtrl.setRoot(MapPage, {'UDI': this.UDI, 'Token': Token})
您还可以使用params执行
push
,然后不使用params执行
setRoot
。您的地图页设置为根目录,不带参数。 函数也接受参数


因为地图页面是主页面,不应该有后退按钮

正如@suraj所说,您正在使用参数推送视图,然后将同一页面设置为root,但没有参数。那是不对的。如果不想显示后退箭头,只需将页面设置为root

if (Token != "-1") {                  
    // this.navCtrl. push(MapPage, {UDI: this.UDI, Token: Token}) <- don't do that
    this.navCtrl.setRoot(MapPage, {UDI: this.UDI, Token: Token}); <- send the data like this
    // this.navCtrl.popToRoot; <- don't do that
    // ...
}
if(令牌!=“-1”){

//this.navCtrl.push(MapPage,{UDI:this.UDI,Token:Token})您需要全局声明某些变量,然后您可以将UDI和令牌传输到所有其他页面。hi@Devanshadhotra您知道关于会话生成和管理而不是使用本地存储或本机存储的参考指南吗?对于上述场景,您不需要本地存储。您只需要两个变量,您可以访问它们在整个项目中,为什么要执行push和setRoot?执行一个..我认为这是执行setRoot,其中没有参数被传递,因为map page是主页,不应该有back按钮。