2

まだいくつかの質問があり、実際には新しい angular2 ルーターに関する情報があります。

まず、新しい @Routes には「名前」がないため、常に相対 URL パスが存在する必要があり、それで問題ありません。

しかし、どのルートがアクティブ化されているかを確認するにはどうすればよいですか?? 非推奨のルーターでこれを行いました:

let instruction = this.router.generate(['Login']);
let isLoginRoute =  this.router.isRouteActive(instruction);

もう1つは、ユーザーがルートに移動する権限を持っているかどうかを確認する最良の方法です。そのためのベストプラクティスは何ですか、今まで私はそのようなことをしました:

@CanActivate((next: ComponentInstruction, previous: ComponentInstruction) => {
  return isLoggedIn(next, previous);
})
export class DashboardCmp implements OnDestroy {

...

export const isLoggedIn = (next: ComponentInstruction, previous: ComponentInstruction) => {
    let injector: Injector = appInjector(); // get the stored reference to the injector
    let router: Router = injector.get(Router);
    let http: Http = injector.get(Http);

    // return a boolean or a promise that resolves a boolean
    return new Promise((resolve) => {
        http
            .get('/orma/api/v1/users/current')
            .map(res => res.json())
            .subscribe(
                (userData) => {
                    console.log('ok, we got user data', userData);
                    resolve(true);
                },
                (err) => {
                    console.log('authentication failed, redirecting');
                    router.navigate(['/login']);
                    resolve(false);
                });
    });
};

誰かが新しいangular2ルーターでこれをすべて行う例を教えてもらえますか?

どうも

4

0 に答える 0