- У меня есть проект Angular 4, который я обновил до Angular 5, и я заметил, что маршрутизация ведет себя по-разному, хотя так могло быть всегда.
- Мой файл
index.html
содержит<base href="/cool/" />
в элементе <head>
. - Мой веб-сервер обслуживает содержимое
index.html
для всех запросов в /cool
, например: GET /cool
GET /cool/
GET /cool/auth
GET /cool/auth/
GET /cool/somethingElse/
- ... но не для
GET /
В моем файле app.routing.ts
я настроил следующие маршруты:
const appRoutes: Routes = [
{ path: 'home' , component: HomeComponent },
{ path: 'misc' , component: MiscComponent },
{ path: 'help' , component: HelpComponent },
{ path: 'auth' , component: AuthComponent },
{ path: '' , redirectTo: '/home', pathMatch: 'full' },
{ path: '**' , component: NotFoundComponent }
];
Следовательно, когда пользователь обращается к http://localhost/cool
, приложение Angular загружает и затем нажимаетисторическое состояние становится http://localhost/cool/home
(поэтому адресная строка изменяется, но браузер не выполняет полную перезагрузку страницы нового местоположения).Пока все хорошо.
На моей странице есть кнопка выхода из системы (в HTML, управляемая AppComponent
), которая при нажатии делает это:
class AppComponent {
logOutClicked( event: Event): void {
this.clientTokenService.clearSavedToken();
this.router.navigate( ['auth'] );
}
}
... но когдаэто происходит, когда браузер выполняет полное обновление страницы для http://localhost
или http://localhost/auth
(я забыл, что заставило его это сделать, я думаю, что это было, когда я сделал router.navigate( ['/auth'] )
- у меня нет доступа к праву приложения Angularтеперь, чтобы проверить).
Я удивлен, что на маршрутизаторе Angular нет явной опции или функции, которая заставляла бы его выполнять «внутреннее перенаправление», не вызывая перезагрузку полной страницы - или есть, и я 'м просто что-то упустил?