Angular 无法创建有效的角度路由防护

Angular 无法创建有效的角度路由防护,angular,angular7,angular7-router,Angular,Angular7,Angular7 Router,我创建了以下route guard: // #region Imports /* Angular */ import {Injectable} from '@angular/core'; import {CanActivate} from '@angular/router'; // #endregion Imports @Injectable() export class AuthenticationGuard implements CanActivate { // #region

我创建了以下route guard:

// #region Imports

/* Angular */
import {Injectable} from '@angular/core';
import {CanActivate} from '@angular/router';

// #endregion Imports

@Injectable()
export class AuthenticationGuard implements CanActivate {

  // #region Operations

  public canActivate() : boolean {
    return true;
  }

  // #endregion Operations
}
我的用法如下:

const routes : Routes = [
  {
    path:         '',
    redirectTo:   'admin',
    pathMatch:    'full'
  },

  {
    path:         'admin',
    component:    AdminComponent,
    canActivate:  [AuthenticationGuard]
  },

  {
    path:         'signin',
    component:    SignInComponent
  }
];

export const ApplicationRoutes : ModuleWithProviders = RouterModule.forRoot(routes); 
我已将这两个模块导入到我的one模块中:

@NgModule({
  imports:      [
    BrowserModule,
    RouterModule,
    HttpClientModule,
    MatSnackBarModule,
    ApplicationRoutes
  ],
  declarations: [
    ApplicationComponent,
    SignInComponent
  ],
  providers:    [
    { provide: AuthenticationGuard }
  ],
  bootstrap:    [ApplicationComponent]
})
export class ApplicationModule {}
然而,当我运行我的应用程序时,Angular说:

Error: Uncaught (in promise): Error: Invalid CanActivate guard
Error: Invalid CanActivate guard

我的防护以何种方式无效?

您需要通过
提供程序
数组,如下所示

@NgModule({
 imports:      [
  BrowserModule,
  RouterModule,
  HttpClientModule,
  MatSnackBarModule,
  ApplicationRoutes
],
declarations: [
  ApplicationComponent,
  SignInComponent
],
providers: [AuthenticationGuard],
bootstrap: [ApplicationComponent]
})
export class ApplicationModule {}

您需要传递
提供程序
数组,如下所示

@NgModule({
 imports:      [
  BrowserModule,
  RouterModule,
  HttpClientModule,
  MatSnackBarModule,
  ApplicationRoutes
],
declarations: [
  ApplicationComponent,
  SignInComponent
],
providers: [AuthenticationGuard],
bootstrap: [ApplicationComponent]
})
export class ApplicationModule {}

试试这个
providers:[AuthenticationGuard]
Huh,成功了,谢谢!作为答案发布请接受并投票:)像这样尝试
providers:[AuthenticationGuard]
Huh,成功了,谢谢!作为答案发布,请接受并投票:)