我从Angular 10迁移到13,从Ionic 5迁移到6。
根据我目前的设置(Angular 13,Ionic 6(,我有一个奇怪的行为:当我使用routerLink指令导航到新页面时,新页面会重新加载,页面堆栈会丢失。
该行为与用户直接在导航栏中键入URL相同。
我试图找到类似的问题或方法来理解这种行为,但一无所获。
你能帮我吗?
路由器根配置:
RouterModule.forRoot(routes, {
preloadingStrategy: PreloadAllModules,
anchorScrolling: 'enabled',
enableTracing: false,
relativeLinkResolution: 'legacy'
})
链接按钮集成:
<ion-button [routerLink]="['/dashboard/targets']" [queryParams]="{s: 'community'}" ...>...</ion-button>
路由器子配置:
RouterModule.forChild([
{
path: 'targets',
loadChildren: () => import('./targets/targets.module').then( m => m.DashboardTargetsPageModule)
}
]),
Ionic 6中有一个错误,已在Ionic 6.0.16中解决,请尝试安装该版本。
npm install @ionic/angular@6.0.16
我发现,通过手动推送到路由器,可以防止这种行为(这也导致了我的根组件和Pinia存储的重新加载(。
请注意,我在vue 3项目中使用了@ionic/vue 7.1.3和@ionic/vue路由器7.1.3,但我认为这可能会解决您的问题。
例如,我替换了:
<ion-card :href="`locn/${locn.id}`">
带有:
<ion-card @click="navigateTo()">
在Vue脚本设置中:
import router from '@/router';
...
function navigateTo(): void {
router.push({ name: 'locn', params: { id: props.locn.id } });
}
在Angular中,您需要将navigateTo公开为公共函数或受保护函数。