Angular Route Guard CanActivate挂在特定页面上

时间:2018-10-02 10:09:40

标签: angular typescript canactivate angular-route-guards

我正在为“条款和条件”页面构建带有路由防护的Angular 5应用。每当有人登录时,他们必须接受条款和条件,然后才能继续使用该应用程序。 Route Guard可以完美运行,但是在接受条款和条件后只有一个问题,单击cookie页面不会加载,它会显示加载图标,但永远不会到达那里,并且仅在单击条款和条件时才会加载cookie页面。第一页。我将在下面显示所有页面的路由,但其他所有页面都可以正常加载。

首先,我有一个“帮助”文件夹,其中包含“条款和条件”页面和“ Cookies”页面。以下可能是help.routes.ts文件。

export class HelpRoutesContainer extends RoutesContainer {

public cookiePolicy = buildRoute(HelpRoutes.cookiePolicy)
    .titleLang('help.cookie-policy-page.title')
    .component( CookiePolicyPageComponent );

public termsAndConditions = buildRoute(HelpRoutes.termsAndConditions)
    .titleLang('help.terms-and-conditions-page.title')
    .component( TermsAndConditionsPageComponent );

public help = buildRoute(HelpRoutes.help)
    .default()
    .titleLang('help.help-page.title')
    .component( HelpPageComponent );}

以下代码是app.routes.ts文件。

  public login = buildRoute(MainRoutes.login)
    .titleLang('login-page.title')
    .anonymous()
    .component(LoginPageComponent);

  public reports = buildRoute(MainRoutes.reports)
    .requireFeature('reports')
    .secure()
    .requireRole(REPORT_ROLES.ROUTE)
    .childModule(ReportsModule)
    .guard(TermsAndConditionsRouteGaurd);

  public auditing = buildRoute(MainRoutes.auditing)
    .secure()
    .requireFeature('auditing')
    .requireRole(AUDITING_ROLES.ROUTE)
    .childModule(AuditingModule)
    .guard(TermsAndConditionsRouteGaurd);

  public admin = buildRoute(MainRoutes.admin)
    .publishToMenu('topMenu', { languageKey: 'admin.menu-title', sortOrder: 4 })
    .secure()
    .requireFeature('admin')
    .requireRole(ADMIN_ROLES.ROUTE)
    .childModule(AdminModule)
    .guard(TermsAndConditionsRouteGaurd);

  public tax = buildRoute(MainRoutes.tax)
    .secure()
    .requireRole(TAX_ROLES.INTERNAL)
    .childModule(TaxModule)
    .guard(TermsAndConditionsRouteGaurd);

  public help = buildRoute(MainRoutes.help)
    .childModule(HelpModule)
    .guard(TermsAndConditionsRouteGaurd);

如您所见,除登录页面外,所有路径都具有TermsAndConditionsRouteGaurd防护,并且除cookie页面(仅显示一个加载图标)外,所有页面都可以访问(在接受了条款和条件之后)。访问cookie页面的唯一方法是先导航到“条款和条件”页面,然后再导航到cookie页面。我已经尝试从app.routes文件中删除防护,并将其添加到help.routes中的cookie组件中,但是它不能解决问题。 任何帮助表示赞赏。 谢谢。

0 个答案:

没有答案