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"
}
我构建了一个 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"
}