试用ES6并尝试创建一个具有静态属性和函数的类进行解析.然后我想为我正在解析的每个不同类型扩展基本解析器.不确定我是否正在做反模式,但我无法覆盖静态属性.
这是我的基础解析器
class Module {
  static name = 'Default Module'
  static version = {major:10000, minor: 10000}
  static checkVersion({majorVersion = 10000, minorVersion = 10000}) {
    if(this.version.major !== majorVersion || this.version.minor > minorVersion) {
      throw `${this.name} requires version ${this.version.major}.${this.version.minor} got ${majorVersion}.${minorVersion}`;
    }
  }
  static parse(data) {
    try {
      this.checkVersion(data);
      return this.internalParser(data);
    } catch (e) {
      throw e;
    }
  }
  static internalParser(data) {
    throw `${this.name} has no parser implemented`;
  }
}
然后我想像这样延伸
class ExtendedModule extends Module {
  static name = 'Extended';
  static version …我目前在一个项目中,我们有一个动态的“表单” /内容模型,该模型具有一个包含字段和占位符的模块,占位符可以包含更多模块,从而为我们提供了递归/灵活的数据模型。
现在进行渲染,我们创建了一个用于渲染模块的组件,针对不同的字段类型进行了动态渲染,然后创建了一个for循环来渲染占位符,这是它自己的组件。
我得到的循环依赖是 module.component -> placeholder.component -> module.component
可以在以下plunkr中找到对此的快速设置:https ://plnkr.co/edit/ieV9rjJ8MZLzFpzPaj3L
运行ng serve没有错误,但ng build --prod确实
WARNING in Circular dependency detected:
src/app/module.component.ngfactory.js -> 
src/app/placeholder.component.ngfactory.js -> 
src/app/module.component.ngfactory.js
我猜这是因为ng build --prodAOT是否建立并且循环依赖关系在HTML中。
但是代码运行良好,真正的问题是这是否被认为是不良的实现模式?我不确定如何解决该问题。
javascript ×2
angular ×1
angular-cli ×1
angular5 ×1
class ×1
ecmascript-6 ×1
extends ×1
static ×1