首页 > 解决方案 > 可以使用由装饰器“组件”在运行时创建的组件吗?

问题描述

我有组件的类

class MyComponentLogic {
  log() {
    console.log('logging!');
  }
}

通过“组件”装饰器创建组件

let TestComponent = Component({ template: 'hey', selector: 'app-test' })(MyComponent);

并得到错误:

ERROR Error: Uncaught (in promise): Error: Angular JIT compilation failed: '@angular/compiler' not loaded!
  - JIT compilation is discouraged for production use-cases! Consider AOT mode instead.
  - Did you bootstrap using '@angular/platform-browser-dynamic' or '@angular/platform-server'?
  - Alternatively provide the compiler with 'import "@angular/compiler";' before bootstrapping.

如果不可能,我可以在运行时重写现有组件的模板吗

标签: angular

解决方案


从技术上讲,是的,您可以……但不建议这样做。这将要求您包含 Angular 编译器,并且您将被限制为 JIT 编译(在生产中)——所有这些都会导致性能有些差,并且通过 HTTP 服务的包臃肿。

我认为我们需要更深入地了解您要完成的工作,以指导您朝着正确的方向前进。


推荐阅读