在登录页面中,应用程序将获得UDI和Token,如果登录/注册成功,它将传递给MapPage:
if (Token != "-1")
{
this.navCtrl.push(MapPage, {UDI: this.UDI, Token: Token})
this.navCtrl.setRoot(MapPage);
this.navCtrl.popToRoot;在构造方法中,在popToRoot触发之前,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发布于 2017-03-08 20:03:20
你的键看起来像变量而不是字符串,你的键和值都是UDI和literals.So的值。
尝试使用引号。
this.navCtrl.setRoot(MapPage, {'UDI': this.UDI, 'Token': Token})同样,您可以使用params执行push,然后不使用params执行setRoot。您的地图页面被设置为不带参数的root。setRoot函数也接受参数
发布于 2017-03-09 03:06:19
,因为地图页面是主页,不应该有后退按钮。
就像@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
// ...
}https://stackoverflow.com/questions/42670516
复制相似问题