Angular 6 指令在延迟加载模块的组件中未初始化
Angular 6 directive is not initialized when placed in lazy loaded module's component
对 Angular 6.
很陌生
我已经在 AppModule 和 appComponent 模板中声明了一个指令,如果我应用该指令它就可以工作,在应用程序组件中有一个路由器出口,其中一个延迟加载模块在一开始就被加载。
现在如果我想在惰性加载模块的任何组件模板中应用该指令,则该指令未被初始化。该指令是一个属性指令,我已经正确声明并使用了它,因为在应用程序组件中它工作正常。
没有得到任何线索,请帮助。
我发现您的设计存在问题。不要将 directive
放在 AppModule
中,而是创建一个 SharedModule
,然后在其中实现 directive
。在您应用的其他任何地方导入 SharedModule
。这样你就可以从外部组件(从其他模块)访问你的directive
。
确保在 SharedModule
中声明并导出它
I thought if anything declared in app module should be available to
all modules
不,这是不正确的,子模块不知道你里面有什么AppModule
。 ChildModule
只是另一个独立的模块,如 AppModule
。您可以简单地将 AppModule
暴露给 ChildModule
,但这可能会导致循环依赖。这就是您必须使用 SharedModule
的原因
如果我们在功能 module/shared 模块中创建指令,请确保我们需要将它们放入声明部分和导出部分。在使用它的地方导入这个 feature/shared 模块。
对 Angular 6.
很陌生我已经在 AppModule 和 appComponent 模板中声明了一个指令,如果我应用该指令它就可以工作,在应用程序组件中有一个路由器出口,其中一个延迟加载模块在一开始就被加载。
现在如果我想在惰性加载模块的任何组件模板中应用该指令,则该指令未被初始化。该指令是一个属性指令,我已经正确声明并使用了它,因为在应用程序组件中它工作正常。
没有得到任何线索,请帮助。
我发现您的设计存在问题。不要将 directive
放在 AppModule
中,而是创建一个 SharedModule
,然后在其中实现 directive
。在您应用的其他任何地方导入 SharedModule
。这样你就可以从外部组件(从其他模块)访问你的directive
。
确保在 SharedModule
I thought if anything declared in app module should be available to all modules
不,这是不正确的,子模块不知道你里面有什么AppModule
。 ChildModule
只是另一个独立的模块,如 AppModule
。您可以简单地将 AppModule
暴露给 ChildModule
,但这可能会导致循环依赖。这就是您必须使用 SharedModule
如果我们在功能 module/shared 模块中创建指令,请确保我们需要将它们放入声明部分和导出部分。在使用它的地方导入这个 feature/shared 模块。