正在Angular 2中的扩展RouterOutlet中导入自定义服务以进行身份验证
Importing custom service in extended RouterOutlet in Angular 2 for authentication
我正试图在Angular 2中设置身份验证,在以下文章(以及之前关于SO的问题)的帮助下,我成功创建了自己的扩展RouterOutlet:
export class LoggedInRouterOutlet extends RouterOutlet {
publicRoutes: any;
private parentRouter: Router;
private loginService: LoginService;
constructor(_viewContainerRef: ViewContainerRef, _loader: DynamicComponentLoader,
_parentRouter: Router, @Attribute('name') nameAttr: string,
private loginService: LoginService) {
super(_viewContainerRef, _loader, _parentRouter, nameAttr);
this.parentRouter = _parentRouter;
this.publicRoutes = {
'login': true
};
}
_canActivate(url: string, admin: boolean) {
=> Checks with my loginService if user is authenticated
}
activate(instruction: ComponentInstruction) {
if (this._canActivate(url, isAdmin)) {
=> Go to desired URL
} else {
=> Go to login page
}
}
}
这个代码的问题是我的typescript生成了以下错误:
"标识符'loginService'重复"
我的代码确实按预期运行,我只是不喜欢在将typescript解析为javascript时出现typescript错误。然而,如果我重命名第二个loginService,我的代码确实会中断,我可以找到
类型错误:this.loginService未定义
在我的控制台里。我想知道是否有人知道如何解决这个问题?
您在类中声明loginService
两次
export class LoggedInRouterOutlet extends RouterOutlet {
publicRoutes: any;
private parentRouter: Router;
// private loginService: LoginService; // <== remove this
并将参数命名为loginService
而不是loginService2
constructor(_viewContainerRef: ViewContainerRef, _loader: DynamicComponentLoader,
_parentRouter: Router, @Attribute('name') nameAttr: string,
private loginService: LoginService) {
super(_viewContainerRef, _loader, _parentRouter, nameAttr);
构造函数参数上的private
或public
修饰符已经声明了具有此名称的类属性。无需再次明确声明该属性。
相关文章:
- 正在Angular 2中的扩展RouterOutlet中导入自定义服务以进行身份验证
- 如何正确地将数据从自定义服务传递到角度控制器
- AngularJs:在自定义服务中使用cookie
- 使用角度模态服务(AngularJS)自定义模态
- 使用angularjs中的自定义服务交换ng src属性
- 在Angular 2中的另一个服务中注入自定义服务
- 如何使用angularJS自定义服务从REST API获取数据
- http的自定义服务不起作用
- Wordpress创建一个自定义休息服务
- Angularjs自定义服务变量未被$http成功定义
- 自定义服务没有加载,尽可能简单
- AngularJs 简单的自定义服务不起作用
- 内部服务器错误在 post 请求中使用 Angular js 中的自定义服务
- 角度 js 自定义服务/工厂无法注入控制器/配置
- 保留 Azure 移动服务的自定义 API 调用的用户身份验证
- 用于定义自定义服务的语法
- AngularJS在自定义服务中使用角度模块
- 如何在Javascript中使用Azure移动服务自定义API的承诺/链接
- 在Azure移动服务自定义API中使用事务
- Sencha触摸azure移动服务自定义登录如何设置用户