当相同组件属于不同模块的一部分时,Angular Shared Module

时间:2019-03-11 12:45:01

标签: javascript angular ng-modules

我想更好地了解Angular模块,没有比https://blog.angularindepth.com/avoiding-common-confusions-with-modules-in-angular-ada070e6891f更好的博客了。

在做了一些博客中提到的实例之后,我有一个问题是:-

如果某些组件X是两个或多个延迟加载的模块的一部分,则Angular会给出一个错误,指出需要创建一个共享模块来声明组件X。尽管此错误仅在使用生产模式时发生,而不仅仅是在使用ng时发生服务。首先,为什么需要创建共享模块?对于这个公共组件,angular确实创建了一个公共块,该块在惰性模块之一加载时加载。您能帮助您理解吗?

该代码可以在回购中找到: https://github.com/sanketmaru/today-i-learned/tree/master/javascript/angular-for-root-child

下面是两个具有共享组件CComponent的惰性模块

https://github.com/sanketmaru/today-i-learned/blob/master/javascript/angular-for-root-child/src/app/c-lazy/c-lazy.module.ts#L8-L12

https://github.com/sanketmaru/today-i-learned/blob/master/javascript/angular-for-root-child/src/app/d-lazy/d-lazy.module.ts#L7-L11

我可以在两个惰性模块中使用相同的组件。推荐的方法是使用在生产时抛出的共享模块,而不是在使用ng serve时抛出的共享模块。

错误:-

错误:在/Users/sanketmaru/projects/today-i-learned/javascript/angular-for-root-child/src/app/c/c.component.ts中的CComponent类型是声明2的一部分模块:/Users/sanketmaru/projects/today-i-learned/javascript/angular-for-root-child/src/app/c-lazy/c-lazy.module.ts中的CLazyModule和/ Users / sanketmaru /中的SharedModule项目/today-i-learned/javascript/angular-for-root-child/src/app/c-lazy/shared.module.ts!请考虑将/Users/sanketmaru/projects/today-i-learned/javascript/angular-for-root-child/src/app/c/c.component.ts中的CComponent移至将更高版本的模块导入到/ Users /中的CLazyModule的模块sanketmaru / projects / today-i-learned / javascript / angular-for-root-child / src / app / c-lazy / c-lazy.module.ts和/ Users / sanketmaru / projects / today-i-learned中的SharedModule /javascript/angular-for-root-child/src/app/c-lazy/shared.module.ts。您还可以在/Users/sanketmaru/projects/today-i-learned/javascript/angular-for-root-child/src/app/c/c.component.ts中创建一个导出并包含CComponent的新NgModule,然后将其导入/Users/sanketmaru/projects/today-i-learned/javascript/angular-for-root-child/src/app/c-lazy/c-lazy.module.ts中的CLazyModule中的NgModule和/ Users / sanketmaru /中的SharedModule项目/today-i-learned/javascript/angular-for-root-child/src/app/c-lazy/shared.module.ts。

0 个答案:

没有答案