angular - Dados passados via Navparam não estão disponíveis no Ionic2
Na página de login, o aplicativo obterá UDI e Token e, se o login/registro for bem-sucedido, ele passará para a MapPage:
if (Token != "-1")
{
this.navCtrl.push(MapPage, {UDI: this.UDI, Token: Token})
this.navCtrl.setRoot(MapPage);
this.navCtrl.popToRoot;
no método construct antes de popToRoot disparar console.log(this.UDI, this.Token); mostra o valor deles, mas depois disso eles são indefinidos.
this.UDI=this.params.get('UDI');
this.Token=this.params.get('Token');
console.log(this.UDI, this.Token);
atualização 1: o resultado
como você pode ver, antes de ir para a página do mapa, ela mostra os valores passados corretos
map.ts:39 2NYIRWI0N8Z6HW2M3HWR XWRU441NHH0B9GSHVC3P
mas após a mudança da página raiz de navegação
map.ts:39 undefined undefined
Resposta #1
Suas chaves parecem mais variáveis do que literais de string. Portanto, sua chave e valor são ambos valores de UDI e Token.
Tente com aspas.
this.navCtrl.setRoot(MapPage, {'UDI': this.UDI, 'Token': Token})
Além disso, você está fazendo tanto push com parâmetros quanto setRoot sem parâmetros. Sua página de mapa está definida como raiz sem parâmetros. A função setRoot também aceita parâmetros
Resposta #2
porque a página do mapa é a página principal e não deveria haver botão de voltar.
Assim como @suraj diz, você está empurrando a visualização com parâmetros e depois definindo a mesma página como raiz, mas sem parâmetros. Isso não está correto. Se você não quer mostrar a seta de voltar, apenas defina a página como raiz
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
// ...
}
