这是我的路线设置。
puzzle1
这是我的路由器呼叫,用于从const appRoutes: Routes = [
{
path: '',
component: HomeComponent
},
{
path: 'get',
canActivateChild: [CanActivateOrder],
children: [
{
path: '',
redirectTo: 'confirm',
pathMatch: 'full'
},
{
path: 'confirm',
component: ConfirmComponent
},
{
path: 'book/:id',
resolve: {
pageData: BookResolver
},
component: BookComponent
}]
},
{
path: '**',
redirectTo: ''
}
];
导航到book/:id
/confirm
在BookResolver中,如果尝试访问ActivatedRoutes快照下的任何参数,则会得到空对象。
this._router.navigate(['get/book', 1234]);
但是,如果我尝试从BookComponent访问相同的内容,则会得到所需的输出。就像
@Injectable()
export class BookResolver implements Resolve<any> {
constructor(private _activatedRoute: ActivatedRoute) {}
resolve(): Observable<Book> {
console.log(this._activatedRoute.snapshot.params);
//This is {}
}
我的路线设置到底在哪里出错?我假设这里的设置有问题。让我知道您是否需要进一步澄清这个问题。
这里是reproduction的闪电战。
答案 0 :(得分:0)
仅在首次加载组件时使用"steps"
是好的。
您应该改为在snapshot.params
上订阅可观察到的参数。
ngOnInit
也可以代替此技巧:
this.ac.params.subscribe(
(params: Params) => console.log(params);
);
您应该正确导航:
this._router.navigate(['get/book', 1234])