2016-08-20 14 views
1

ティエリー・テンプリィアの別のstackoverflowポストで非常にきちんとした解決策を見つけましたが、角度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; 

    } 
} 

角度の古いルータ上で、我々はこれを行うことができます:

は、基本的にこれは安全なディレクティブです

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

、私はどのように取得する方法を把握することはできませんルータ命令。 これを行う別の方法はありますか?

編集:詳細 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を取得する方法が必要です。詳細については質問を更新しました。ありがとう – 12seconds

+0

@ 12seconds、あなたはthis.router.configからデータを取得することがあります。問題は経路が遅延ロードされている場合に見つけられません。また、私は何か解決策を探しています。 –

関連する問題