Angular 4路由器:直接浏览器导航重启app

时间:2017-07-27 23:17:28

标签: angular angular-routing

当我使用浏览器直接导航到应用程序重新启动的路线时,它会将我带到正确的页面/组件。 例如,当我浏览按钮时,它会直接将我带到那里,而无需重新启动应用程序。

这是预期的行为吗? 我该如何防止这种情况?

问题是我们使用身份服务器进行身份验证。它需要一个回调网址,它被视为直接浏览器导航和应用程序重新启动。

我们的app-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 { }

回调路径是身份服务器的回调网址。

1 个答案:

答案 0 :(得分:1)

是的,这是预期的行为。当您使用Angular应用程序中的按钮进行路由时,只需使用pushState修改历史as described in the docs(在底部)。

当您进行直接导航时,您将获取index.html,它将引导应用程序,然后应用程序将使用当前URL来确定要显示的组件。

The answer to this question希望涵盖如何解决您的问题。