Я пытался реализовать HashLocationStrategy после развертывания приложения Angular 5 в IIS. В моем приложении Angular есть 3 модуля: RootModule и 2 модуля с отложенной загрузкой (AccountModule и AppModule).
После аутентификации в компоненте AccountModule приложение должно перейдите к основному компоненту в AppModule. Но он не перемещается так, как должен, после нажатия кнопки «Войти». Только когда я обновляюсь вручную, он направляет меня к модулю приложения.
Нужно ли мне добавлять какие-либо дополнительные конфигурации или импорт в дочерний модуль, или достаточно просто настроить корневой модуль? Или что-то не так с моими конфигурациями?
Вот мой код:
Модуль корневой маршрутизации:
const routes: Routes = [
{ path: '', redirectTo: '/app/home', pathMatch: 'full' },
{
path: 'account',
loadChildren: 'account/account.module#AccountModule', //Lazy load account module
data: { preload: true }
},
{
path: 'app',
loadChildren: 'app/app.module#AppModule', //Lazy load account module
data: { preload: true }
}
];
@NgModule({
imports: [
RouterModule.forRoot(routes, {
onSameUrlNavigation: 'reload', useHash: true, enableTracing: true
})],
exports: [RouterModule],
providers: []
})
Корневой модуль:
@NgModule({
imports: [
// ...,
RootRoutingModule
],
declarations: [
RootComponent
],
providers: [
// ...,
{provide: LocationStrategy, useClass: HashLocationStrategy}
],
bootstrap: [RootComponent]
})
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AccountComponent,
children: [
{ path: 'login', component: LoginComponent },
{ path: 'register', component: RegisterComponent }
]
}
])
],
exports: [
RouterModule
]
})
Когда я ввожу учетные данные пользователя и нажимаю кнопку «Войти», он не переходит к #/app/home, он просто остается там, где находится сейчас. Но он уже аутентифицирован.

Мне нужно вручную ввести корневой URL-адрес в адресной строке.

Только после этого я попадаю на #/app/home.
Это фиксируется в журнале консоли после того, как я нажал кнопку входа в систему.
Router Event: NavigationStart
platform-browser.js:367 NavigationStart(id: 3, url: '/')
platform-browser.js:367 NavigationStart {id: 3, url: "/"}
platform-browser.js:380 Router Event: RoutesRecognized
platform-browser.js:367 RoutesRecognized(id: 3, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } )
platform-browser.js:367 RoutesRecognized {id: 3, url: "/", urlAfterRedirects: "/app/home", state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckStart
platform-browser.js:367 GuardsCheckStart(id: 3, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } )
platform-browser.js:367 GuardsCheckStart {id: 3, url: "/", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: '')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: 'app')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: 'app')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: '')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: '')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: 'home')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: GuardsCheckEnd
platform-browser.js:367 GuardsCheckEnd(id: 3, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } , shouldActivate: false)
platform-browser.js:367 GuardsCheckEnd {id: 3, url: "/", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: false}
platform-browser.js:380 Router Event: NavigationCancel
platform-browser.js:367 NavigationCancel(id: 3, url: '/')
platform-browser.js:367 NavigationCancel {id: 3, url: "/", reason: ""}
platform-browser.js:380 Router Event: NavigationStart
platform-browser.js:367 NavigationStart(id: 4, url: '/account/login')
platform-browser.js:367 NavigationStart {id: 4, url: "/account/login"}
platform-browser.js:380 Router Event: RoutesRecognized
platform-browser.js:367 RoutesRecognized(id: 4, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } )
platform-browser.js:367 RoutesRecognized {id: 4, url: "/account/login", urlAfterRedirects: "/account/login", state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckStart
platform-browser.js:367 GuardsCheckStart(id: 4, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } )
platform-browser.js:367 GuardsCheckStart {id: 4, url: "/account/login", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckEnd
platform-browser.js:367 GuardsCheckEnd(id: 4, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } , shouldActivate: true)
platform-browser.js:367 GuardsCheckEnd {id: 4, url: "/account/login", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: 'login')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: '')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: '')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: 'account')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: 'account')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: '')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: NavigationEnd
platform-browser.js:367 NavigationEnd(id: 4, url: '/account/login', urlAfterRedirects: '/account/login')
platform-browser.js:367 NavigationEnd {id: 4, url: "/account/login", urlAfterRedirects: "/account/login"}
platform-browser.js:380 Router Event: NavigationStart
platform-browser.js:367 NavigationStart(id: 5, url: '/')
platform-browser.js:367 NavigationStart {id: 5, url: "/"}
platform-browser.js:380 Router Event: RoutesRecognized
platform-browser.js:367 RoutesRecognized(id: 5, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } )
platform-browser.js:367 RoutesRecognized {id: 5, url: "/", urlAfterRedirects: "/app/home", state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckStart
platform-browser.js:367 GuardsCheckStart(id: 5, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } )
platform-browser.js:367 GuardsCheckStart {id: 5, url: "/", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: '')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: 'app')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: 'app')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: '')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationStart
platform-browser.js:367 ChildActivationStart(path: '')
platform-browser.js:367 ChildActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationStart
platform-browser.js:367 ActivationStart(path: 'home')
platform-browser.js:367 ActivationStart {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: GuardsCheckEnd
platform-browser.js:367 GuardsCheckEnd(id: 5, url: '/', urlAfterRedirects: '/app/home', state: Route(url:'', path:'') { Route(url:'app', path:'app') { Route(url:'', path:'') { Route(url:'home', path:'home') } } } , shouldActivate: false)
platform-browser.js:367 GuardsCheckEnd {id: 5, url: "/", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: false}
platform-browser.js:380 Router Event: NavigationCancel
platform-browser.js:367 NavigationCancel(id: 5, url: '/')
platform-browser.js:367 NavigationCancel {id: 5, url: "/", reason: ""}
platform-browser.js:380 Router Event: NavigationStart
platform-browser.js:367 NavigationStart(id: 6, url: '/account/login')
platform-browser.js:367 NavigationStart {id: 6, url: "/account/login"}
platform-browser.js:380 Router Event: RoutesRecognized
platform-browser.js:367 RoutesRecognized(id: 6, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } )
platform-browser.js:367 RoutesRecognized {id: 6, url: "/account/login", urlAfterRedirects: "/account/login", state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckStart
platform-browser.js:367 GuardsCheckStart(id: 6, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } )
platform-browser.js:367 GuardsCheckStart {id: 6, url: "/account/login", urlAfterRedirects: UrlTree, state: RouterStateSnapshot}
platform-browser.js:380 Router Event: GuardsCheckEnd
platform-browser.js:367 GuardsCheckEnd(id: 6, url: '/account/login', urlAfterRedirects: '/account/login', state: Route(url:'', path:'') { Route(url:'account', path:'account') { Route(url:'', path:'') { Route(url:'login', path:'login') } } } , shouldActivate: true)
platform-browser.js:367 GuardsCheckEnd {id: 6, url: "/account/login", urlAfterRedirects: UrlTree, state: RouterStateSnapshot, shouldActivate: true}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: 'login')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: '')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: '')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: 'account')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ActivationEnd
platform-browser.js:367 ActivationEnd(path: 'account')
platform-browser.js:367 ActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: ChildActivationEnd
platform-browser.js:367 ChildActivationEnd(path: '')
platform-browser.js:367 ChildActivationEnd {snapshot: ActivatedRouteSnapshot}
platform-browser.js:380 Router Event: NavigationEnd
platform-browser.js:367 NavigationEnd(id: 6, url: '/account/login', urlAfterRedirects: '/account/login')
platform-browser.js:367 NavigationEnd {id: 6, url: "/account/login", urlAfterRedirects: "/account/login"}
@ Эдрик: Конечно, я над этим работаю
@Edric Готово, добавление скриншотов и подписей!
есть ли у вас проблемы при запуске в IIS Express (при использовании Visual Studio). Я только что пробовал с последней версией. Никаких проблем с навигацией после успешного входа в систему!
попробуйте с другим браузером (если вы используете IE)





Скриншоты? Ошибки? Демо Stackblitz? Не могли бы вы показать нам что-нибудь из этого?