0
ヘイ、私たちは複数のユーザーを持っていると私はルートに入る前に、IDによって、そのユーザーを解決する必要があるので、ユーザの詳細を確認したいアプリを抱えているAngular2ルート決意複数のアクション
。すべてのユーザーをフェッチするユーザーコンポーネントに自分自身を着陸させると、私はそれを行うとすべていいです。しかし、リロードの場合、ルートはidでユーザーを解決しようとします。ユーザーはまだ存在しないため(まだフェッチされていません)、失敗します。私は、ユーザーが存在するかどうかを確認し、それらを取得して、ユーザーとのルートを解決したいと思います。ここでは、コードです:コンポーネント
this.route.data.subscribe(
(res) => {
this.user= res['user'];
}
);
で
resolve(route: ActivatedRouteSnapshot): Observable<any>|Promise<any>|any {
let id = route.params['id'];
if (!this.usersService.checkIfUsersExist()) {
return this.usersService.getUsers().subscribe(
(success) => {
return this.usersService.getUserById(id);
},
(error) => {
this.router.navigate([ 'login ']);
}
);
} else {
return this.usersService.getUserById(id);
}
}
そして私はルートデータを聞くときに私が得るすべてはユーザーを持つオブジェクトです:サブスクライバ。 this.usersService.getUserById関数のみを返すと、ユーザーオブジェクトが正常に取得されます。 switchMap
を使用する
作品。ありがとう、私はいつも購読だけを使用しました。 – Prototype