Pesquisa de site

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
    // ...
}