У меня есть проект Angular 8 (ioni c). Где я хочу издеваться над некоторыми родными провайдерами. Я создал этот класс
import { AppVersion } from '@ionic-native/app-version/ngx';
import { Provider } from '@angular/core';
import { AppVersionMock } from './mocks/app-version.mock';
export class NativePluginsWithMocks {
public static getProviders(): Provider[] {
let providers;
const isCordovaEnvirionment = (window as any)['cordova'];
if (isCordovaEnvirionment) {
// Use device providers
providers = [AppVersion];
} else {
// Use browser providers
providers = [{ provide: AppVersion, useClass: AppVersionMock }];
}
return providers;
}
}
И я предоставляю его на своем модуле
import { NativePluginsWithMocks } from './native-plugins-with-mocks/native-plugins-with-mocks';
@NgModule({
declarations: [],
imports: [CommonModule],
providers: [
...NativePluginsWithMocks.getProviders(),
SplashScreen,
StatusBar,
ScreenOrientation,
NativeToast,
AdMobFree,
SecureStorage,
Device,
Market,
File,
AndroidPermissions,
InAppPurchase2,
Network,
NativeStorage,
{
provide: StorageService,
useFactory: storageServiceFactory,
deps: [Storage, NativeStorage, LoggerService, Platform]
}
]
})
export class IonicNativePluginsModule {}
Он работает в режиме dev
, но в режиме prod
компилятор отправляет ошибку:
Ошибка при ошибке при компиляции шаблона 'IonicNativePluginsModule' [ng] Вызовы функций не поддерживаются в декораторах, но вызывается NativePluginsWithMocks.
Есть ли способ сделать эту работу в производственном режиме? Я думаю, что я мог бы обернуть это на фабрике, но это означало бы, что я должен создать много кода котельной плиты для каждого макета. Я вижу что-то не так?