具有惰性模块的Angular2路由

具有惰性模块的Angular2路由,angular,angular2-routing,angular-routing,Angular,Angular2 Routing,Angular Routing,我试图找出如何在我的应用程序中使用延迟加载的模块配置路由 例如,我有一个名为animalmodule的惰性模块,我希望该模块处理2条路由“/cats”和“/dogs” 在当前的路由器api中,我需要为所有惰性模块路由指定公共路径,例如:“动物/狗”和“动物/猫” { path: "animals", loadChildren: "animals" } 我可以为AnimalsModule指定空路径: { path: "", loadChildren: "animals

我试图找出如何在我的应用程序中使用延迟加载的模块配置路由

例如,我有一个名为animalmodule的惰性模块,我希望该模块处理2条路由“/cats”和“/dogs”

在当前的路由器api中,我需要为所有惰性模块路由指定公共路径,例如:“动物/狗”和“动物/猫”

{
   path: "animals",
   loadChildren: "animals"
}
我可以为AnimalsModule指定空路径:

{
    path: "",
    loadChildren: "animals"
},
{
   path: "foo",
   component: FooComponent
}
但在这种情况下,当用户导航到“/foo”资源时,将不需要加载AnimalsModule

如果我创建“动物/猫”和“动物/狗”路由,并且将来我想重构代码,将AnimalsModule拆分为DogsModule和CatsModule(也是惰性的),我将不得不中断我的应用程序路由。(合并时相同)


如何使用没有公共路径的惰性模块创建路由?

路由有一个名为
matcher
属性的属性,您可以在其中提供自己的路由匹配逻辑,但正如在问题的注释中所述,我真的要创建2条路由,甚至将它们分成2个模块(更有可能).

但是你为什么不直接写出动物模块的路径呢?如果你这么做,我不认为这与动物模块有任何关系。最后,您希望更好地将其拆分,以便在animalmodule之外对其进行定义。“foo”与animalmodule没有任何关系,但在本例中,访问“foo”路由时将加载animalmodule。UrlMatcher和我的文档似乎可以找到任何其他文档。我认为单独的模块只用于路由目的-不是一个好主意。模块通常表示一个单独的应用程序功能,并且与routingHere's the source of truth for
UrlMatcher
文档没有明确的关系,来自源代码:我尝试了,但我无法针对所描述的问题实现matcher。我还尝试为我的惰性模块路由复制defaultUrlMatcher实现,但没有收到相同的行为。我猜惰性模块路由这是angular路由的一个特例。请确保您有最新的angular包。目前为2.4.3