使用Angular Router将一个解析的结果传递给另一个解析

Jus*_*tin 8 routing resolver angular

我知道如何为路由创建多个解析类,但我不知道如何将一个解析的结果传递给另一个解析.

// Example Route
{
  path: 'book/:id',
  component: BookComponent,
  resolve: {
    document: BookResolve,
    title: BookTitleResolve
  }
}
Run Code Online (Sandbox Code Playgroud)

如果BookResolve返回一个book对象,那么如何将该book对象传递给BookTitleResolve

我有一个标题服务,在数据中查找关键标题.我需要能够从书籍对象生成书名.这需要是动态的.

小智 7

同一组件内的解析同时运行,但父级中的解析会在子级之前完成,因此实现这一点的最简单方法是创建一个父级路由,目的是解析本书。

{
  path: 'book/:id',
  resolve: {
    document: BookResolve
  },
  children: [ {
    path: '',
    component: BookComponent,
    resolve: {
      title: BookTitleResolve
    }
  } ]
}
Run Code Online (Sandbox Code Playgroud)

请注意,父级不渲染组件,子级包含空白路径,因此尽管添加了一些样板,但该路由的功能应该相同。

然后在您的 BookTitleResolve 实现中,您可以从父路由中检索:

class BookTitleResolve {
    resolve(route: ActivatedRouteSnapshot) {
        // Do something with route.parent.data.document
    }
}
Run Code Online (Sandbox Code Playgroud)