0
私はこのコードを持っています。親ルートの角2解決
「ユーザー」のこの子ルートを「新規」にルーティングします。 ルート 'ユーザー'にはリゾルバがあります。 これは問題なく動作します。
しかし、成功した後にユーザーを作成します。 子ルートからのリダイレクト後にDataResolverが機能しないため、新しいユーザーが「ユーザー」にリダイレクトされますが、リストに表示されません。
どのように修正できますか?
//Roiting
export const ROUTES: Routes = [
{ path: 'dashboard',
component: Dashboard,
children: [
{ path: 'users',
component: Users,
resolve: {
users: DataResolver
},
children: [
{ path: 'new', component: NewUser }
]
},
]
}
];
//Resolver
@Injectable()
export class DataResolver implements Resolve<any> {
constructor(private userService: UserService) {}
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> {
return this.userService.all(); // return users
}
}
//Component
export class NewUser {
errorMessage: string;
user: User;
constructor(public route: ActivatedRoute,
private userService: UserService,
private router: Router) {
this.user = new User();
}
onSubmit(): void {
this.userService
.createUser(this.user)
.subscribe(
user => {
this.router.navigate(['/dashboard', 'users']);
},
error => this.errorMessage = <any>error);
}
}
// USers component
export class Users implements OnInit {
users: User[];
constructor(public route: ActivatedRoute,
private router: Router) {
this.route.data.subscribe((data: any) => {
this.users = data.users;
});
}
}
に役立ちます願っています。 (更新質問です) – schumi
はい。 問題は、リゾルバが子ルータからの移行では機能しないことです。 – schumi
私は答えを更新しました。私はあなたのようにルーティングを使用していません。多分それは助けます。 – ulubeyn