ионный 4 + угловой: routerLink работает только в первый раз - PullRequest
0 голосов
/ 20 декабря 2018

У меня странная ошибка при разработке базового приложения с нуля прямо сейчас.Я использую 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 голосов
/ 28 июля 2019

Если возможно, обходной путь - использовать абсолютный путь вместо относительного пути, как сказано в этом ответе github :

Я оставлю этот вопрос открытым, и мыпостараюсь исправить, но это далеко не тривиально, и использование абсолютных путей - хороший обходной путь!

Мы знаем об этой проблеме:)

Таким образом, у вас будет:

<ion-item routerLink="/home" />

вместо:

<ion-item routerLink="home" />
0 голосов
/ 07 апреля 2019

Вы можете исправить эту ошибку, запустив
npm i @ionic/angular

0 голосов
/ 12 марта 2019

Это известная ошибка.Вы можете найти проблему GitHub здесь: https://github.com/ionic-team/ionic/issues/16534.

Как упомянуто выше @mario, абсолютные ссылки будут работать с routerLink.Смотрите комментарий здесь: https://github.com/ionic-team/ionic/issues/16534#issuecomment-444610330

0 голосов
/ 05 апреля 2019

Это уже исправлено, просто запустите npm i @ionic/angular для обновления до версии исправления 4.2.0 или выше.

Это также повлияло на router.navigate(['url', params]) функциональность

0 голосов
/ 20 декабря 2018

Решил, используя вместо этого navigateByUrl, например:

open(id: number) {
  this.router.navigateByUrl(this.router.url + '/' + id);
}

и для карты:

<ion-card *ngFor="let item of items;" (click)="open(item.id)">
    ...
</ion-card>

Все еще не знаю, почему это происходит, но это работает как обходной путьна данный момент.

...