Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度布线参数是子组件中的空对象';s分解器_Angular_Routing_Resolver_Routeparams - Fatal编程技术网

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);
);