Recentemente precisei criar uma página de busca no meu app criado com Ionic. Mas o resultado da minha busca não ficaria nessa página, mas em outra página então precisei mandar para o construtor da outra página alguns valores.
Eu estou usando Ionic 4 então quase não encontrei conteúdo sobre o assunto. Então resolvi compartilhar com vocês como é feito.
Essa solução foi introduzida no Angular 7.2
Vamos usar o state para passar um objeto, você pode passar qualquer tipo de objeto por parâmetro. A estrutura do projeto está separado em duas telas. Uma de detalhes e outra que é aonde está o filtro.
import { Component } from '@angular/core';
import { Router, NavigationExtras } from '@angular/router';
@Component({
selector: 'app-filter',
templateUrl: 'filter.page.html',
styleUrls: ['filter.page.scss'],
})
export class FilterPage {
valorParaEnviar = {
name: 'Micael Pereira',
website: 'micaelpereira.com.br',
Angular: {
version: 7,
year: 2019
},
Libs: [
'Vue', 'React', 'Jquery'
]
};
constructor(private router: Router, private dataService: DataService) { }
enviarInfosViaState() {
let navigationExtras: NavigationExtras = {
state: {
valorParaEnviar: this.valorParaEnviar
}
};
this.router.navigate(['feed'], navigationExtras);
}
}
O código anterior é o meu .ts referente a página de filtro.
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
@Component({
selector: 'app-feed',
templateUrl: './feed.page.html',
styleUrls: ['./feed.page.scss'],
})
export class FeedPage implements OnInit {
data: any;
constructor(private route: ActivatedRoute, private router: Router) {
this.route.queryParams.subscribe(params => {
let getNav = this.router.getCurrentNavigation();
if (getNav.extras.state) {
this.data = getNav.extras.state.valorParaEnviar;
}
});
}
ngOnInit() { }
}
No segundo temos o código para pegar o valor que foi enviado.
Podendo assim trabalhar com o valor de diferentes formas. passando para um serviço para fazer o get em um servidor com os parâmetros.
Quer aprender mais de ionic, indico esse curso: http://bit.ly/2VdoFlY