在 Ionic 4.1/Angular 7.2.2 中,在页面之间导航时,这工作正常:
<a [routerLink]="'/myPage'" [routerDirection]="'forward'">Navigate!</a>
但是,我现在处于我希望从Route A
导航到Route A
的位置。 即在我的主页上有一个链接,它会在导航堆栈顶部打开一个新的主页实例。
两个页面在app-routing.module.ts
中共享相同的路由,即:
{
path: 'mypath/:id',
component: HomePage
}
由于:id
的值不同,因此页面的呈现方式也会有所不同。我需要导航堆栈中主页的两个(或更多(不同实例,因为向后导航也应该是可能的。
使用Ionic和Angular路由器解决此问题的推荐方法是什么?
问题是缺少RouteReuseStrategy
这个问题特别与Ionic有关,它<ion-back-button>
。
Angular 的默认行为是在只有参数更改时重用组件。这不会将组件添加到导航堆栈。
要解决此问题,您必须将@ionic/angular
提供的RouteReuseStrategy
添加到app.module.ts
的提供程序数组中
import { IonicRouteStrategy } from "@ionic/angular";
{
provide: RouteReuseStrategy,
useClass: IonicRouteStrategy
}
我不太了解您的问题,但是默认情况下,Angular 不允许您两次导航到同一个 url,您必须启用它。
onSameUrlNavigation: 'reload' | 'ignore'
How to handle a navigation request to the current URL. One of:
'ignore' : The router ignores the request.
'reload' : The router reloads the URL. Use to implement a "refresh" feature.
https://angular.io/api/router/Router#config
要重定向到 Angular 中的同一页面,您需要执行以下操作:
<a routerLink=".">Navigate!</a>
这就像一个相对路径,告诉 Angular 我想留在当前路线中。
您可以使用<ion-tabs>
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="home">
<ion-icon src="assets/icons/navbar/home.svg" size="large"></ion-icon>
<ion-label>home</ion-label>
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
ActivatedRoute
:
export class Component implements OnInit {
constructor(private _router:Router,
private _route:ActivatedRoute){}
ngOnInit() {
this._route.params.subscribe(params => {
this.param = params['yourParam'];
this.getData(this.param); // reset and set based on new parameter this time
});
}
getData(id) {} // get data from API
}