【问题标题】:Angular 2 routing with custom secure directive带有自定义安全指令的 Angular 2 路由
【发布时间】:2016-12-27 05:49:36
【问题描述】:

我在 Thierry Templier 的另一个 stackoverflow 帖子中找到了一个非常简洁的解决方案,但是对于 Angular 2 RC5 新路由器来说它已经过时了。

基本上这是安全指令:

@Directive({
  selector: '[secured]'
})
export class SecuredDirective implements OnInit {
  @HostBinding('hidden') hideRouterLink: boolean = false;

  @Input() routerLink: string;

  constructor(private router: Router ) {
    console.log(router);
  }

  ngOnInit(): void {
    console.log(this.routerLink);

    // How to get routeData here??
    // Auth logic
    this.hideRouterLink = true;

  }
}

以前在 Angular 的旧路由器上我们可以这样做:

var instruction = this.router.generate(this.routeParams);
var data = instruction.component.routeData.data;

现在使用 RC5,我不知道如何获取路由器指令。 有没有其他方法可以做到这一点?

编辑:更多信息

我想要实现的是获取routing.ts示例中定义的路由数据:

{ path: 'control-panel', component: ControlPanelComponent, data: { 'resources': 'controlpanel', 'privileges': 'admin'} }

非常感谢任何帮助,谢谢!

【问题讨论】:

    标签: angular angular2-routing


    【解决方案1】:

    你可以试试下面,

    @Directive({
     selector: '[secured]'
    })
    export class SecuredDirective implements OnInit, AfterViewInit  {
      _hideRouterLink: string = '';
      @HostBinding('style.display') get hideRouterLink() {
        return this._hideRouterLink; 
      } 
      set hideRouterLink(val: boolean){
        this._hideRouterLink =  val;
      }
    
      @Input('routerLink') routeParams:  any[];
    
      constructor(private router: Router ) {
       console.log(router);
      }
    
      ngAfterViewInit(){  
      }
    
      ngOnInit(): void {
        console.log(this.routeParams);
     
        // Auth Logic
        this.hideRouterLink = 'none';
      }
    }
    

    这里是Plunker!

    【讨论】:

    • 我如何检索 RouteData?您的解决方案与我的类似。我需要一种方法来检索路线中定义的 RouteData,我更新了我的问题以获取更多信息。谢谢
    • @12seconds,你可能会从 this.router.config 获取数据,问题是如果路由延迟加载你不会发现,我也在寻找一些解决方案,如果我找到一些东西会更新答案。
    猜你喜欢
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2014-07-15
    • 1970-01-01
    • 2016-04-05
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多