Это интересно. Вы правы, хотя раньше это не предотвращали, , но, насколько я знаю, с плющом уже должно быть возможно сделать это по-своему, но я не уверен .
Только что проверил, и вы правы, с таким динамическим значением c, оно пока не работает
Если у вас есть хотя бы angular 9, вы можете сделать следующее :
Итак, я предполагаю, что ваш AppConfig.IS_IE
настроен до импорта модуля анимации. Глядя на исходный код, я думаю, что вы могли бы сделать что-то подобное, создав собственный модуль анимации При этом используется специальное свойство ɵinj
, которое не является частью API publi c, поэтому оно может быть изменено:
@NgModule({
exports: [BrowserModule],
})
export class ConfigAnimationsModule {
static forRoot(isIE: boolean) {
return {
ngModule: ConfigAnimationsModule,
providers: isIE
? NoopAnimationsModule.ɵinj.providers
: BrowserAnimationsModule.ɵinj.providers
};
}
}
, которое затем можно импортировать:
imports: [
ConfigAnimationsModule.forRoot(AppConfig.IS_IE),
//...
]
Для angular версии <= 8 вы можете использовать частную собственность <code>ngInjectorDef. Хотя не проверено, поэтому ваш пробег может варьироваться:
@NgModule({
exports: [BrowserModule],
})
export class ConfigAnimationsModule {
static forRoot(isIE: boolean) {
return {
ngModule: ConfigAnimationsModule,
providers: isIE
? NoopAnimationsModule['ngInjectorDef'].providers
: BrowserAnimationsModule['ngInjectorDef'].providers
};
}
}