Angular 10个没有常春藤的图书馆

Angular 10 library without ivy

我构建了一个 Angular 10 库并通过直接导入 (file:dist/my-lib) 使用它。

现在我想将我的库发布到私有 npm 存储库。 为了让它工作,我更改了 tsconfig.lib.json 并禁用了 ivy:

"angularCompilerOptions": {
    ...,
    "enableIvy": false
  }

一切正常,我能够构建和发布我的库。 大多数库代码都按预期工作,但在一个组件(在库内部使用)中有一个函数:

export class MyComponent {
  public hasChanges(): boolean {
    return ...;
  }
}

我确实在注入的 @ViewChild('myCustomComponent') myComponent: MyComponent; 上调用了这个函数,这会引发 hasChanges 不是函数的错误。

我真的不知道需要什么才能解决这个问题。 有没有想过禁用 ivy 可能会出现什么问题?

当我在不禁用 ivy 的情况下构建库时一切正常。

解决方案是使用 Angular >= 11 和部分编译模式。

tsconfig.lib.json中:

"angularCompilerOptions": {
    "compilationMode": "partial"
}

See here for further explanation