我在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'} }
非常感谢任何帮助,谢谢!
答案 0 :(得分:0)
你可以在下面试试,
@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!
希望这会有所帮助!!