j'essaie d'obtenir l'instance de page actuelle dans app.component en ionic 4.
en ionic 3 je peux le faire comme ça
this.nav.getActive (). instance
dans mon cas, j'ai utilisé un observable pour résoudre cette situation
voici mon service url
@Injectable({
providedIn: 'root'
})
export class CurrentPageService {
private $urlParts:BehaviorSubject<any>;
private url;
constructor(private router:Router) {
this.$urlParts = new BehaviorSubject(null);
}
get urlParts(){
return this.$urlParts.asObservable();
}
setUrl(){
this.url=this.router.url;
let parts = this.url.split('/');
return this.$urlParts.next(parts);
}
}
et toute page qui m'intéresse d'obtenir son état actuellement actif dans mon composant d'application, je déclenche cette observable
export class HomePage {
constructor(private currentPage:CurrentPageService) {
}
ionViewDidEnter(){
this.currentPage.setUrl();
}
et enfin dans mon composant
export class AppComponent {
urlParts;
constructor(private currentpage:CurrentPageService){
this.currentPage.urlParts.subscribe(url=>this.urlParts=url);
});
}
foo(){
if (!this.urlParts.includes('home')) {
//do something
}
}
}
J'ai fait celui-ci et cela fonctionne pour moi:
ionViewWillEnter() {
console.log(this.router['routerState'].snapshot.url);
}
vous pouvez suivre la page actuelle en utilisant le routeroutlet
<router-outlet (activate)="componentName = $event"></router-outlet>
consultez la documentation pour plus d'informations https://angular.io/api/router/RouterOutlet