angular - 无法创建有效的角度路由保护
问题描述
我创建了以下路由守卫:
// #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);
我都已导入到我的一个模块中:
@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
我的警卫以什么方式无效?
解决方案
您需要providers
像下面这样传递数组
@NgModule({
imports: [
BrowserModule,
RouterModule,
HttpClientModule,
MatSnackBarModule,
ApplicationRoutes
],
declarations: [
ApplicationComponent,
SignInComponent
],
providers: [AuthenticationGuard],
bootstrap: [ApplicationComponent]
})
export class ApplicationModule {}
推荐阅读
- laravel - 从 laravel 文档中,“侧边栏”和“内容”要求什么:单独的子文档或仍有待制作的东西?
- qt - StackLayout 的尺寸设置
- joomla - 覆盖组件中的路由类
- java - 如何删除此 [RemoteTestNG] 检测到的 TestNG 版本 7.2.0 失败:basePageNavigation java.lang.NullPointerException
- python - 在长缩放器中出现运行时警告溢出错误
- javascript - Javascript 按名称删除嵌套对象属性
- oracle - 将消息发布到 Oracle Cloud 流服务
- android - 使用 adb 命令获取 LTE 数据平衡以在终端中获取输出
- reactjs - 单击父项中的保存按钮时如何将子对象传递给父项?
- html - (html/css) 图像在桌面上的位置不正确