Angular Обновление для повышения производительности Нет провайдера для $ rootcope, $ location - PullRequest
0 голосов
/ 06 августа 2020

У меня есть установка Angular Гибридная установка с использованием Angular обновления для повышения производительности и возможность запускать приложение без каких-либо проблем.

Но у меня возникла проблема с запуском Angular дополнительных тестовых примеров, Я предоставил компоненты, spe c и все связанные фрагменты. Может ли кто-нибудь помочь мне в решении, в чем может быть проблема и как ее исправить.

Пожалуйста, дайте мне знать, требуются ли дополнительные сведения

Angular Компонент: componentA .ts

constructor(@Inject('$rootScope') public rootScope) { }

Angular Component Spe c: componentA.spe c .ts

TestBed.configureTestingModule({
  declarations: [ ComponentA ],
  providers: [
    {
      provide: '$rootScope',
      useFactory: ($injector: any) => $injector.get('$rootScope'),
      deps: ['$injector']
    }
  ],
  imports: [
    createAngularTestingModule([ 'app'])
  ]
})

Ошибка

Error: [$injector:unpr] Unknown provider: $rootElementProvider <- $rootElement <- $location <- $location
    at eval (webpack:///./node_modules/angular/angular.js?:68:12)
    at eval (webpack:///./node_modules/angular/angular.js?:4418:19)
    at Object.getService [as get] (webpack:///./node_modules/angular/angular.js?:4571:39)
    at eval (webpack:///./node_modules/angular/angular.js?:4423:45)
    at getService (webpack:///./node_modules/angular/angular.js?:4571:39)
    at injectionArgs (webpack:///./node_modules/angular/angular.js?:4595:58)
    at Object.invoke (webpack:///./node_modules/angular/angular.js?:4617:18)
    at eval (webpack:///./node_modules/angular/angular.js?:4424:37)
    at getService (webpack:///./node_modules/angular/angular.js?:4571:39)
    at injectionArgs (webpack:///./node_modules/angular/angular.js?:4595:58)
NullInjectorError: R3InjectorError(DynamicTestModule)[$rootScope -> $rootScope]: 
  NullInjectorError: No provider for $rootScope!
error properties: Object({ ngTempTokenPath: null, ngTokenPath: [ '$rootScope', '$rootScope' ] })
    at NullInjector.get (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:1085:1)
    at R3Injector.get (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:16984:1)
    at R3Injector.get (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:16984:1)
    at NgModuleRef$1.get (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:36608:1)
    at Object.get (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:34252:1)
    at getOrCreateInjectable (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:5892:1)
    at ɵɵdirectiveInject (http://localhost:9876/node_modules/@angular/core/__ivy_ngcc__/fesm2015/core.js:21251:1)

1 Ответ

2 голосов
/ 06 августа 2020

Вроде ошибки говорят, что отсутствует $rootElement провайдер. Вы можете это сделать, вставив ниже перед выполнением TestBed.configureTestingModule.

angular.module(<your_angularjs_module>).provider({
   $rootElement: {
       $get: () => {
           return angular.element(document.getElementById(<your_root_angularjs_element_id>));
       }
   }
});
...