现在从头开始开发基本应用程序时遇到了一个奇怪的错误。 我使用Ionic 4 beta 19,并已将routerLink放置到另一个页面,该路由是在基本页面模块中设置的,如下所示:
RouterModule.forChild([
{ path: '', component: NewsPage },
{ path: ':id', component: DetailPage }
])
routerLink属性是在卡上设置的,单击卡时它可以正常工作,但是当我返回并按下同一张卡或另一张卡时,路由器根本不执行任何操作。我没有任何错误,浏览器中的URL正常运行。怎么会这样?
编辑:而且,DetailPage没有模块,因此它基本上只是一个页面。
编辑:卡代码如下:
<ion-card *ngFor="let item of items;" [routerLink]="[item.id]">
...
</ion-card>
在详细信息页面中,订阅了路由参数,并且:id参数将用于GET请求订阅以检索数据
答案 0 :(得分:4)
通过使用navigationByUrl来解决此问题,
open(id: number) {
this.router.navigateByUrl(this.router.url + '/' + id);
}
和卡片:
<ion-card *ngFor="let item of items;" (click)="open(item.id)">
...
</ion-card>
仍然不知道为什么会发生这种情况,但是现在这可以作为一种解决方法。
答案 1 :(得分:2)
这是一个已知的错误。您可以在这里找到GitHub问题:https://github.com/ionic-team/ionic/issues/16534。
正如上面的@mario所述,绝对链接将与routerLink一起使用。在此处查看评论:https://github.com/ionic-team/ionic/issues/16534#issuecomment-444610330
答案 2 :(得分:1)
此问题已解决,只需运行npm i @ionic/angular
即可更新到4.2.0或更高版本的修复程序。
这也影响了router.navigate(['url', params])
的功能
答案 3 :(得分:0)
您可以通过运行
来修复此错误
npm i @ionic/angular
答案 4 :(得分:0)
如果可能,一种解决方法是使用绝对路径而不是this github answer中所述的相对路径:
我将保留此问题的公开性,我们将尝试解决此问题,但这绝非易事,使用绝对路径是一个不错的解决方法!
我们知道这个问题:)
所以您将拥有:
<ion-item routerLink="/home" />
而不是:
<ion-item routerLink="home" />