0

ngrx/routerを使用しています。

ログインが必要なLoginGuardページを開くと、LoginGuard runs beforeisSignedInがtrueに設定されています。だからその時isSignedInundefined

@Injectable()
export class LoginGuard implements Guard {
  constructor(private _router: Router, private _userService: UserService) { }

  protectRoute({ route, params, isTerminal }: TraversalCandidate): Observable<boolean> {
    return this._userService.checkSignedIn()
      .map(isSignedIn => {
        if (!isSignedIn) {
          this._router.replace('/landing');
          return false;
        } else {
          return true;
        }
      }).first();
  }
}

アプリの最初に設定isSignedInしましたが、これは頭の中で最も早い場所です。true

class App implements OnInit {
  ngOnInit() {
    // I set isSignedIn in UserService to true here after I got user info from the server
  }
}

でもまだ早いかも?では、 GuardisSignedInが実行されるtrue前にどのように設定できますか? ありがとう

4

1 に答える 1

0

私のアプリは、実際には非同期の方法でアクセスをチェックするサービスを使用しています。

@rtytgat が解決策を提供します。ありがとう!

警備員に確認し、ログインしていない場合は「ログイン」ページに送信し、ログインが確認されたら返送します。

于 2016-06-03T22:29:48.303 に答える