Angular 角度布线参数是子组件中的空对象';s分解器
这是我的路线设置Angular 角度布线参数是子组件中的空对象';s分解器,angular,routing,resolver,routeparams,Angular,Routing,Resolver,Routeparams,这是我的路线设置 const appRoutes: Routes = [ { path: '', component: HomeComponent }, { path: 'get', canActivateChild: [CanActivateOrder], children: [ { path: '', redirectTo: 'confirm', pathMatch: 'full'
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: ''
}
];
这是我的路由器呼叫,用于从/confirm
this._router.navigate(['get/book', 1234]);
在我的BookResolver中,如果我尝试访问ActivatedRoutes的快照下的任何参数,我会得到空对象
@Injectable()
export class BookResolver implements Resolve<any> {
constructor(private _activatedRoute: ActivatedRoute) {}
resolve(): Observable<Book> {
console.log(this._activatedRoute.snapshot.params);
//This is {}
}
我的路线设置到底哪里出了问题?我假设这里的设置有问题。如果你需要更清楚地回答这个问题,请告诉我
这里有一个stackblitz。使用
snapshot.params
仅在组件首次加载时有效。
相反,您应该在ngOnInit
上订阅参数的可观测值
this.ac.params.subscribe(
(params: Params) => console.log(params);
);
另外,与此不同的是:
this.\u路由器导航(['get/book',1234])
您应该正确导航:
this.\u router.navigate(['get','book',1234])
我喜欢第二个建议。我会的。但是关于解析,解析程序不应该在组件之前创建,因此可以查看当前url并在组件加载之前解析任何异步操作吗?如果解析器无法在浏览器刷新时解析回数据,那么它有什么意义?我不需要使用快照。我可以订阅params。然而,即使这样也无法得到实际的路由参数。我明白我的问题。我注入了ActivatedRoute服务,而不是使用ActivatedRouteSnapshot参数,该参数将传递给resolve()方法。
this.ac.params.subscribe(
(params: Params) => console.log(params);
);