Предоставление динамически смоделированного класса вызывает ошибку «Вызовы функций не поддерживаются в декораторах, но ...» в режиме prod - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть проект 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.

Есть ли способ сделать эту работу в производственном режиме? Я думаю, что я мог бы обернуть это на фабрике, но это означало бы, что я должен создать много кода котельной плиты для каждого макета. Я вижу что-то не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...