【问题标题】:Angular 4 router: direct browser navigation restarts appAngular 4路由器:直接浏览器导航重新启动应用程序
【发布时间】:2017-07-28 07:27:57
【问题描述】:

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

这是预期的行为吗? 我怎样才能防止这种情况发生?

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

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

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

【问题讨论】:

  • 你找到解决办法了吗?

标签: angular angular-routing


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您提供的有用信息。不幸的是,您提供的相关问题的链接没有帮助。
猜你喜欢
  • 2018-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-24
  • 2011-01-16
  • 2015-10-03
  • 2015-05-15
相关资源
最近更新 更多