2016-08-20 5 views
1

Я нашел очень аккуратное решение на другом stackoverflow сообщение от Thierry Templier, однако оно устарело для нового маршрутизатора с угловым 2 RC5.Угловая 2 маршрутизация с пользовательской безопасной директивой

В основном это безопасная директива:

@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, я не могу понять способ, как получить инструкция маршрутизатора. Есть ли другой способ сделать это?

Edit: подробнее

То, что я пытаюсь добиться, чтобы захватить данные маршрута, определенные в примере routing.ts:

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

Любая помощь очень ценится, спасибо!

ответ

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!

Надеется, что это помогает !!

+0

Как я могу получить RouteData? Ваше решение похоже на мое. Мне нужен способ получить RouteData, определенную в маршрутах, я обновил свой вопрос для получения дополнительной информации. Спасибо – 12seconds

+0

@ 12 секунд, вы можете получить данные из this.router.config, проблема в том, что маршрут лениво загружен, вы его не найдете, я также ищу какое-то решение для этого, если я нахожу, что что-то обновит ответ. –