问题是:
我只想在IE上导入NoopAnimationsModule。在我的app.module的imports数组中,我有类似的东西:
imports: [AppConfig.IS_IE ? NoopAnimationsModule : BrowserAnimationsModule, .... ]
这在开发期间有效,但在生产中无效。我想这与代码导入之前的AOT编译有关到达浏览器。
我得出的结论是,我必须同时导入它们和在运行时配置一些东西,以便决定应使用哪个模块的提供程序。
请记住,这两个模块都提供相同的服务,但是要有所不同,以改变Angular处理动画的方式。
有没有办法实现这个想法?
这很有趣。您是正确的,尽管那个aot可以防止这种情况发生,但是据我所知,对于常春藤,应该已经可以按照您的方式来做了,但我不确定。
刚刚测试,您是对的,具有这样的动态值,它尚不起作用
如果不是,或者您尚未更新到最新版本,请参见下文:
所以我假设您的AppConfig.IS_IE
在导入动画模块之前已设置。通过查看源代码,我相信您可以通过创建自定义动画模块来执行以下操作:
@NgModule()
export class ConfigAnimationsModule {
static forRoot(): ModuleWithProviders<BrowserAnimationsModule | NoopAnimationsModule> {
return {
ngModule: AppConfig.IS_IE ? NoopAnimationsModule : BrowserAnimationsModule
};
}
}
然后可以导入:
imports: [
ConfigAnimationsModule.forRoot(),
//...
]