Ошибка динамического создания / компиляции компонента и модуля

#angular #compilation #components

#angular #Сборник #Компоненты

Вопрос:

Я следую некоторым примерам, которые я видел, и создаю и компилирую компонент во время выполнения с помощью Angular со следующими версиями

 Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.1
@angular-devkit/build-angular     0.901.9
@angular-devkit/build-optimizer   0.901.9
@angular-devkit/build-webpack     0.901.9
@angular-devkit/core              9.1.1
@angular-devkit/schematics        9.1.1
@angular/cdk                      9.2.0
@angular/flex-layout              9.0.0-beta.29
@angular/material                 9.2.0
@ngtools/webpack                  9.1.9
@schematics/angular               9.1.1
@schematics/update                0.901.1
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0
  

У меня есть метод, который создает модуль и компонент и компилирует их. Я получаю сообщение об успешной компиляции от angular cli

 private createModule(template: string, imports = [], providers = []) {
    @Component({
        selector: 'app-table-cell-content',
        template,
        providers
    })
    class CustomComponent {};

    @NgModule({
        imports: imports ? imports : [],
        declarations: [ CustomComponent ]
    })
    class CustomModule {};

    return this._compiler.compileModuleAndAllComponentsSync(CustomModule);
}
  

Когда приложение запускается, это действительно работает, и я вижу свой пользовательский контент в компоненте. Однако, когда код фактически выполняется, в моей консоли VSCode (не в консоли chrome) Я вижу следующую ошибку. Эта ошибка не позволяет работать таким вещам, как CI, даже если приложение запускается / работает нормально, но компилятор фактически не улавливает его, пока оно не скомпилируется во время выполнения

     ERROR in src/app/shared/table/table.component.ts:128:14 - error NG1010: template must be a string
    
    128                 template
                        ~~~~~~~~
    src/app/shared/table/table.component.ts:134:13 - error NG1010: Expected array when reading the NgModule.imports of CustomModule
    
    134                 imports
                        ~~~~~~~
  

Редактировать
Я обновил angular до следующего, но получаю те же результаты:

 Package                           Version
-----------------------------------------------------------
@angular-devkit/architect         0.901.12
@angular-devkit/build-angular     0.901.12
@angular-devkit/build-optimizer   0.901.12
@angular-devkit/build-webpack     0.901.12
@angular-devkit/core              9.1.12
@angular-devkit/schematics        9.1.12
@angular/cdk                      9.2.0
@angular/flex-layout              9.0.0-beta.29
@angular/material                 9.2.0
@ngtools/webpack                  9.1.12
@schematics/angular               9.1.12
@schematics/update                0.901.12
rxjs                              6.5.5
typescript                        3.8.3
webpack                           4.42.0
  

Комментарии:

1. разве вы не должны устанавливать template в пустую строку по умолчанию?

2. Компонент должен быть повторно использован. Есть ли способ скомпилировать шаблон и впоследствии добавить шаблон в компонент?

3. Эта часть кода была взята из нескольких источников в качестве примеров, что позволило передать динамический текст для шаблона