2017-07-27 100 views
1

當我使用瀏覽器直接導航到路線時,應用程序重新引導,然後它將我帶到正確的頁面/組件。 當我通過一個按鈕導航時,它會直接帶我到那裏,而無需重新啓動應用程序。Angular 4路由器:直接瀏覽器導航重新啓動應用程序

這是預期的行爲? 我該如何預防?

問題是我們使用身份服務器進行身份驗證。它需要一個回調url,它被視爲直接瀏覽器導航,並且應用程序重新啓動。

我們的應用程序,routing.module看起來是這樣的:

const routes: Routes = [ 
    { path: '', redirectTo: '/dashboard', pathMatch: 'full' }, 
    { path: 'dashboard', component: DashboardComponent, canActivate: [RouteGuardService] }, 
    { path: 'users', component: UsersMainComponent}, 
    { path: 'vendors', component: VendorMainComponent}, 
    { path: 'invoices', component: InvoicesMainComponent}, 
    { path: 'offers' , component: EsdMainComponent}, 
    { path: 'settings' , component: SettingsMainComponent}, 
    { path: 'callback' , component: CallbackComponent}, 
    { path: 'createvendor' , component: CreateVendorsComponent, canActivate: [RouteGuardService]}, 
    { path: 'customerdashboard' , component: CustomerDashboardComponent}, 
]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes)], 
    exports: [RouterModule], 
    providers: [RouteGuardService] 
}) 
export class AppRoutingModule { } 

回調路徑是身份服務器的回調URL。

+0

您是否找到任何解決方法? – Boris

回答

1

是的這是預期的行爲。在Angular應用程序中使用按鈕進行路由時,只需使用pushState即可修改歷史記錄as described in the docs(位於底部)。

當您執行直接導航時,您將獲取index.html,這將啓動應用程序,然後應用程序將使用當前URL來確定顯示哪個組件。

The answer to this question希望涵蓋如何解決您的問題。

+0

感謝您的有用信息。不幸的是,你提供給相關問題的鏈接沒有幫助。 – hholtij

相關問題