在我们的应用程序中,我们测试用户是否已同意使用条款,然后才能访问请求表单 .

我设置了一个CanActivate警卫来检查它 . 如果它是假的,我会遇到一个奇怪的行为: i can see the request form in a brief time (of a blink!) before being actually redirected to the terms . 如果防护是假的,我该如何防止此行为并直接重定向 .

在激活守卫路线之前,警卫是否应该完成检查?

这是我的路线:

import { Routes } from '@angular/router';
import { RequestFormComponent} from './request-form.component';
import { TermsComponent } from './terms.component';
import { TermsGuard } from './services/terms-guard.service';

export const secretRoutes: Routes = [
  {
    path: '',
    redirectTo: 'form'
  },
  {
    path: 'form',
    component: RequestFormComponent,
    canActivate: [TermsGuard ]
  },
  { path: 'terms', component: TermsComponent },      

  // otherwise redirect to form
  { path: '**',  redirectTo: 'form' }
];

根据同一个问题,有没有办法在这个数组中定义默认路由?为避免写两条单独的行:

{
    path: '',
    redirectTo: 'form'
  },
  {
    path: 'form',
    component: RequestFormComponent,
    canActivate: [TermsGuard ]
  },