离子4 +角度:routerLink仅在第一次使用

时间:2018-12-19 21:37:13

标签: angular ionic-framework angular-routing ionic4

现在从头开始开发基本应用程序时遇到了一个奇怪的错误。 我使用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请求订阅以检索数据

5 个答案:

答案 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" />