如何在角度4中解析应用程序级数据?

Pei*_*ong 5 angular

假设我有一个应该为所有URL加载的全局配置。

例如:

/
/users
/users/abc
Run Code Online (Sandbox Code Playgroud)

我可以手动将解析器一个接一个地添加到所有url,但是在那种情况下,我必须从捕获路由数据的每个组件中更新全局配置,对吗?有没有更好的方法来解决这个问题?


假设我们有多个模块:

App Module
/login
/sign-up

User Module
/user/list
/user/:id

Product Module
/product/list
/product/:id
Run Code Online (Sandbox Code Playgroud)

@DeborahK的解决方案,我们仍然必须在每个模块的根路由中添加解析器,我可以肯定地说这肯定可以工作。但是,有没有一种方法可以一次申请一次?

Deb*_*ahK 3

如果您有父路由和子路由,您可以在父路由上设置解析器并在子路由中使用它。我这里有一个例子:https ://github.com/DeborahK/Angular-Routing/tree/master/APM-Final

我的父级和子级路线如下所示。请注意,解析器仅位于父级上。

  {
    path: ':id/edit',
    component: ProductEditComponent,
    resolve: { product: ProductResolver },
    canDeactivate: [ProductEditGuard],
    children: [
      {
        path: '',
        redirectTo: 'info',
        pathMatch: 'full'
      },
      {
        path: 'info',
        component: ProductEditInfoComponent
      },
      {
        path: 'tags',
        component: ProductEditTagsComponent
      }
    ]
  }
Run Code Online (Sandbox Code Playgroud)

然后您可以像这样从子级读取解析器数据:

ngOnInit(): void {
        this.route.parent.data.subscribe(data => {
            this.product = data['product'];

            if (this.productForm) {
                this.productForm.reset();
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

我正在关注变化,所以请订阅。如果您不需要监视更改,可以使用快照。