我有一个名为NewsComponent
的组件,该组件在我的应用程序内共享。我想将其扩展为NewsModule
并添加一个路由系统以显示单个文章,以便我的路由看起来像
/some-component
/some-component/news
/some-component/news/article/12345
/other-component
/other-component/news
/other-component/news/article/23456
为了使其路线相对,我正在延迟加载模块:
const routes: Route = [
{
path: 'some-component',
component: SomeComponent
},
{
path: 'some-component/news',
component: SomeNewsWrapperComponent,
children: [
{
path: '',
loadChildren: './news/module#NewsModule'
}
]
}
// same for /other-component
]
问题是NewsComponent
根据某些输入数据显示了视觉效果,而我过去常常通过@Input
传递视觉效果。但是,由于该组件已封装在其延迟加载的模块中,因此不再可能。
我可以在导入了NewsService
和NewsModule
的第三个模块中创建一个AppModule
,并以这种方式传递数据,但是我认为这违反了模块化,因此我想避免它。对于单向数据流入模块是否有更好的解决方案?
答案 0 :(得分:1)
我认为除了这两种方法之外,没有办法传递数据(如果您是延迟加载的话)。
根据我的理解,模块化就是设计的全部。如果您有大量数据要传递到延迟加载模块,那么绝对应该在错误的地方损坏了模块。延迟加载时,应该传递最少的信息,以使这些信息可以通过某些查询参数传递。
如果您具有共享服务,是的,它是解决上述问题的解决方案,但是,是的,它也违反了模块化,但这是设计问题。在最适当的级别使用延迟加载可使设计完美,并且在模块化方面不会出现任何问题。