【问题标题】:How to use Angular Resolver for a component without route config?如何将 Angular Resolver 用于没有路由配置的组件?
【发布时间】:2019-08-01 15:25:53
【问题描述】:

我正在使用 Angular Resolver 在显示路由之前从服务器预取数据,因此页面不会加载为空,我们对这个原则很好。

我现在的问题是如何使用相同的Resolver 在没有路由的情况下从服务器预取数据?为了解释更多我的问题是我的屏幕草图:

在我的应用程序的 HeadreComponent 上,我需要进行一些 api-call 以获取 person.firstNameperson.lastName 但标题没有定义路由,因为它应该显示在第一页 (http:localhost:4200\家)。 所以我不能像这样在路由配置中使用常规语法来调用解析器:

{path: 'home', component: HomeComponent, resolve: {personInfos: PersonInfoResolver}}

我可能会遗漏一些我正在开始 Angular 开发的东西,所以请善待:D

【问题讨论】:

  • 您可以创建一个具有空路径且没有组件的父级,并将您的应用组件包含为该路由的子级。这将使您的应用程序组件与您的标头一起路由,从而可以使用解析器。
  • @trichetriche 你能解释一下吗?你的意思是用 {path: '', component: HeaderParentComponent, resolve: {personInfos: PersonInfoResolver}} 创建一个 HeaderParentComponent 吗?
  • 是的,从您的应用组件中删除标题。使其出现在您的路由配置中。然后,您可以访问解析器。
  • 在这种情况下,我认为我应该为孔横向组件执行此操作,例如 NavigationComponent、FooterComponent 等……我说得对吗?它将是:{path: '', component: ParentComponent, resolve: {list all my api resolvers here ...}},而我 ParentComponent 的 html 部分将是:<app-header> <router-outlet> <app-footer>
  • 取决于您的期望,但可能是这样。如果我是你,我会先加载没有数据的页面,因为页眉/页脚是应用程序的一部分,永远不会移动。

标签: angular api angular-resolver


【解决方案1】:

我使用@trichetriche 在评论中提出的解决方案:使用具有路由()的父组件来实现解析器,然后使用@Input() 将数据传递给ChildComponent。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 1970-01-01
    • 2020-05-16
    • 2018-01-06
    • 2018-11-11
    相关资源
    最近更新 更多