#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. Эта часть кода была взята из нескольких источников в качестве примеров, что позволило передать динамический текст для шаблона