Angular 9 - Как мне перейти к пути за пределами загруженного с отложенным доступом компонента? - PullRequest
0 голосов
/ 09 апреля 2020

Я только что обновил свое приложение angular 7 до Angular 9. Теперь, когда я пытаюсь щелкнуть routerLink = "'/ login'", оно просто добавляет его в URL. В Angular 7 он очистит URL и приведет меня к этому пути.

Мой URL: http://localhost: 0101 / app / main Я нажимаю на

html:  <li (click)="goTo('login')"><a>Login</a></li>

  // this is the function that gets called from the html

  goTo(route) {
    this.router.navigate([route]);
  }

Но это выдает: htpp: // localhost: 0101 / app / main / login Это неправильно, я хочу, чтобы это было htpp: // localhost: 0101 / login

Примечание: app / main - это лениво загруженный компонент. логин находится в файле app-module.routing.ts

Похоже, Angular 9 изменил способ обработки этих изменений маршрута. И документы, кажется, не объясняют подробно.

Надеюсь услышать ваш отзыв!

1 Ответ

1 голос
/ 09 апреля 2020

Вы можете создать абсолютную ссылку на путь, начав с root при создании нового маршрута:

<li (click)="goTo('login')"><a>Login</a></li>

goTo(route: string) {
    this.router.navigateByUrl('/' + route);
}

Я предпочитаю использовать navigateByUrl в этом случае, потому что он ожидает строку, так что если маршрут для перехода содержит «/», вам не нужно делать ничего лишнего. В противном случае вы должны разделить пройденный маршрут, чтобы создать новый массив для передачи в navigate.

Другая опция:

<li (click)="goTo('/login')"><a>Login</a></li>

goTo(route: string) {
    this.router.navigateByUrl(route);
}

в обоих случаях /login загружается вместо относительного пути к текущему активированному маршруту.

Как видно из документов RouterLink :

Имя первого сегмента может начинаться с /, ./, или ../:

  • Если первый сегмент начинается с /, маршрутизатор будет искать маршрут из root приложения.

  • Если первый сегмент начинается с ./ или не начинается с sla sh, маршрутизатор вместо этого будет искать дочерние элементы текущего активированного маршрута.

  • И если первый сегмент начинается с ../, маршрутизатор поднимется на go на один уровень.

...