@NgModule загружает динамические компоненты во время выполнения, используя SystemJs - PullRequest
0 голосов
/ 05 ноября 2019

Я пытаюсь загрузить динамические компоненты во время выполнения, используя функцию compileModuleAndAllComponentsAsync. при загрузке компонентов я пытаюсь внедрить службу под названием ServicetestService .

Теперь происходит следующее: когда код достигает:

Заголовок ## const cmp = factory.create (inj, [], null, moduleRef);

Я получаю эту ошибку:

"Ошибка: StaticInjectorError (ServicetestService) [AnimationBuilder -> RendererFactory2]: \ n NullInjectorError: нетпровайдер для RendererFactory2! \ n на NullInjector.get

Вот код, который я использую:

return SystemJS.import(`${url}`).then((module) => {
        return this.compiler.compileModuleAndAllComponentsAsync(module[`${moduleInfo.moduleName}`]).then(moduleWithCompFactories => {              
            const inj = Injector.create(
                {
                    providers: [
                        {
                            provide: ServicetestService, 
                            deps: []
                        }
                    ],  
                    //parent: null,  
                    name: 'ServicetestService' 
                });
            const moduleRef = moduleWithCompFactories.ngModuleFactory.create(inj);
            if(moduleInfo.moduleName === 'LibrarytestModule'){

                //return moduleRef;
                console.log("module:");
                console.log(module);

                console.log("moduleref");
                console.log(moduleRef);

                console.log("factory");
                const factory = moduleWithCompFactories.componentFactories[1];
                console.log(factory);

                console.log("cmp");
                const cmp = factory.create(inj, [], null, moduleRef);
                cmp.instance.ServicetestService = ServicetestService;

                console.log(cmp);
            }
            return module;;
        });
    });

это синтаксис службы, которую я пытаюсь внедрить:

import { AbstractServicetestService } from 'abstractclasses';
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})

export class ServicetestService extends AbstractServicetestService{

constructor() {
   super();
}

printhello(){
   alert("Hello from service elie");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...