typescript - Ionic 4 sättRoot med Angular Router
Jag uppgraderar mitt Ionic 3-projekt till den senaste Ionic 4 och jag har lite problem med routing. I Ionic 3 använde jag setRoot precis så här:
handler: () => navCtrl.parent.parent.setRoot(HomePage, 'logout', {animate: true})
Den senaste navCtrl i Ionic 4 har bara goBack, goForward och goRoot, och jag förstår inte hur man använder parent. Jag hittade ActivatedRoute i Angular, men jag tror inte att detta är rätt sätt. Hur kan jag göra?
Svar #1
Generellt sett, och med hänvisning till denna fantastiska artikel om detta ämne av Josh Morony:
I Ionic 4 med Angular-routing finns det ingen rot-sida att definiera.
Eftersom Ionic 4 är beroende av Angulars router har NavController ändrats för att återspegla denna nya verklighet, och för en Angular-applikation finns det inget som heter en "root"-rutt. Du byter helt enkelt mellan rutter och ramverket sköter resten av arbetet.
Generellt sett är metoderna navigateRoot, navigateBackward och navigateForward här endast för att instruera Ionic om hur man hanterar animationer. Så du kan använda navigateRoot i Ionic 4 för att åstadkomma samma sak som du använde setRoot för i Ionic 3.
Jag rekommenderar starkt att du läser den ovan nämnda artikeln, den täcker mycket av det du behöver veta för att migrera dina rutter från version 3 till version 4 av Ionic.
Svar #2
Med @angular/router är ett sätt att uppnå det beteende du förväntar dig genom att använda replaceUrl och skipLocationChange av NavigationExtras här i de officiella dokumenten Koden skulle vara något i stil med detta:
this.router.navigate([pageLink], {replaceUrl: true})
Men ja, den refererade navigateRoot finns inte på @angular/router som den gjorde på ionic 3
