Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 4中的应用程序级数据?_Angular - Fatal编程技术网

如何解析angular 4中的应用程序级数据?

如何解析angular 4中的应用程序级数据?,angular,Angular,假设我有一个全局配置,应该为所有URL加载 例如: / /users /users/abc 我可以手动将解析器逐个添加到所有URL,但在这种情况下,我必须从捕获路由数据的每个组件更新全局配置,对吗?有没有更好的方法来处理这个问题 假设我们有多个模块: App Module /login /sign-up User Module /user/list /user/:id Product Module /product/list /product/:id @DeborahK的解决方案我们仍

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

例如:

/
/users
/users/abc
我可以手动将解析器逐个添加到所有URL,但在这种情况下,我必须从捕获路由数据的每个组件更新全局配置,对吗?有没有更好的方法来处理这个问题


假设我们有多个模块:

App Module
/login
/sign-up

User Module
/user/list
/user/:id

Product Module
/product/list
/product/:id

@DeborahK的解决方案我们仍然需要将解析器添加到每个模块的根路由中,我可以说这肯定会起作用。但是有没有一种方法可以在一个地方应用一次?

如果您有父路由和子路由,您可以在父路由上设置冲突解决程序,并在子路由中使用它。我举了一个例子:

我的父母和孩子的路线是这样的。请注意,冲突解决程序仅位于父级上

  {
    path: ':id/edit',
    component: ProductEditComponent,
    resolve: { product: ProductResolver },
    canDeactivate: [ProductEditGuard],
    children: [
      {
        path: '',
        redirectTo: 'info',
        pathMatch: 'full'
      },
      {
        path: 'info',
        component: ProductEditInfoComponent
      },
      {
        path: 'tags',
        component: ProductEditTagsComponent
      }
    ]
  }
然后,您可以从子级读取解析程序数据,如下所示:

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

            if (this.productForm) {
                this.productForm.reset();
            }
        });
    }

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

我也在尝试找出angular 4的最佳方法,从我的测试中可以看出

a) 您不能将解析程序置于顶层,即如果您有多个功能模块,解析将不会级联

b) 将冲突解决程序放置在每个功能模块的根目录下(您需要数据),会导致冲突解决程序不必要地运行(例如,每次您在不同功能模块的组件之间来回导航时)

因此,我认为解析器似乎不太适合应用程序范围的数据加载,最好探索其他技术,如APP_初始值设定项或向引导程序中注入内容的方法(例如,这看起来很有趣:)。想知道其他人认为什么最合适。祝你好运,如果你发现任何感兴趣的事情,请及时更新