首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在角2 rc4中扩展rc4

如何在角2 rc4中扩展rc4
EN

Stack Overflow用户
提问于 2016-07-11 12:27:31
回答 2查看 2K关注 0票数 0
代码语言:javascript
复制
import { ViewContainerRef, ComponentFactoryResolver, Directive, ResolvedReflectiveProvider} from '@angular/core';
import { Router, RouterOutlet, ActivatedRoute, RouterOutletMap } from '@angular/router';

@Directive({
    selector: 'router-outlet'
})
export class ApplicationRouter extends RouterOutlet {
    publicRoutes: Array;
    private parentRouter: Router;
    private router: Router;

    constructor(parentOutletMap: RouterOutletMap, location:ViewContainerRef, componentFactoryResolver: ComponentFactoryResolver, name: string) {
        super(parentOutletMap, location, componentFactoryResolver, name);
        this.router = _parentRouter;
    }

    activate(activatedRoute: ActivatedRoute, providers: ResolvedReflectiveProvider[], outletMap: RouterOutletMap) {
        debugger;
       // return super.activate(instruction);
    }

}

我不知道要实例化超类的类型,目的是将授权转移到路由器级别。

EN

回答 2

Stack Overflow用户

发布于 2016-07-12 17:28:38

您是出于特定的原因而对扩展RouterOutlet感兴趣,还是仅仅为了向您的路由添加身份验证层?对于后者,只需将auth类从“扩展RouterOutlet”更改为“实现CanActivate”。

"AuthenticationGuard“实现的一个例子:

代码语言:javascript
复制
import { CanActivate }    from '@angular/router';

@Injectable()
export class AuthGuard implements CanActivate {
  constructor(private authService: AuthService, private router: Router) {}

  canActivate() {
    if (this.authService.isLoggedIn) { return true; }
    this.router.navigate(['/login']);
    return false;
  }
}

然后,在您的路由文件中,将"CanActivate“属性添加到您想要的访问控制层:

代码语言:javascript
复制
//route file
...
{
  path: 'admin',
  component: CrisisAdminComponent,
  canActivate: [AuthGuard]
},
...

就这么简单。

来自角docs路由器保护会话

票数 1
EN

Stack Overflow用户

发布于 2016-07-30 19:20:50

在RC4的角度升级之后,我也遇到了同样的问题。其中一个应用程序组件是扩展RouterOutlet

随着时间的推移,RouterOutlet已经发生了很大的变化,为了使类ApplicationRouter工作,您需要通过实现CanActivate接口来利用路由器保护。

请检查我的答案这里和阅读更多关于路由器保护参考

我希望这能帮到你!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38306909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档