延迟加载模块中的角度延迟加载模块

Mus*_*cho 6 module lazy-loading angular

我可以在延迟加载模块中延迟加载模块吗?
我有这样的“出版物”路线模块,但它加载了太多编辑此出版物的功能,而用户可能没有权限。因此,我尝试以某种方式对其进行优化,因为根据权限,我有类似的“编辑/添加”组件。
如果您有关于以某种方式优化权限的建议,将会很高兴。

更新是的,你可以。只需为延迟加载模块中的路由导入其他模块

mru*_*ova 0

FpgTimeComponent不是将要加载的惰性模块文件的一部分,所以你不能这样做。想想看,您正在尝试在惰性模块中导入一个组件,该模块对此一无所知,因为它没有在该模块中定义,并且它也没有在您在LazyModule. 那么它从哪里获取组件呢?

添加FpgTimeComponent到 aSharedModule并将其导入SharedModule到您的 中LazyModule,或将 移动FpgTimeComponent到您的LazyModule. 一旦你做了其中之一,它就应该起作用了。

无论如何,这是一个更好的方法,因为我可以保证,当您继续开发时,您将继续遇到与其他组件/其他惰性模块相同的错误。如果您在多个地方使用组件,那么它们应该存在于SharedModuleAngular最佳实践定义的中,并且SharedModule应该导入到所有惰性模块中。

这是一个例子。

共享模块:

import { FpgTimeComponent } from './some/path';

@NgModule({
    declarations: [
        FpgTimeComponent
    ],
    exports: [
        FpgTimeComponent
    ]
})
Run Code Online (Sandbox Code Playgroud)

惰性模块:

import { SharedModule } from '../shared/shared.module';

import { LazyComponent }   from './lazy.component';
import { routing } from './lazy.routing';

@NgModule({
    imports: [
        routing,
        SharedModule
    ],
    declarations: [
        LazyComponent
    ]
})
Run Code Online (Sandbox Code Playgroud)