npm (Angular、Openlayer)是否可以将类从ng库中的外部包导入到ng应用程序中

wvt8vs2t  于 2023-03-03  发布在  Angular
关注(0)|答案(1)|浏览(211)

我目前正在开发一个Angular 库,它可以设置一个可以作为Angular 组件导入的openlayersMap。该组件工作正常,但在我运行该组件的Angular 应用程序中,我需要访问库导入的某个包中的一些类/常量。(特别是OpenLayers)

    • 我目前的解决方案是在应用程序内部安装相同的包。**但是,这两个包之间似乎存在某种形式的转换问题。(两者使用的是相同版本的包)很难用纯文本解释这个问题,所以我将提供一些伪代码来进一步解释。

在我的Angular 库中,我有以下方法:

import { Feature} from "ol";
....

public addFeature(feature: Feature) {
    this.layer.getSource().addFeature(feature);
}

在我的Angular 应用程序中,我有以下几行代码

import { Feature} from "ol";

public test() {
    const feature = new Feature();
    myLibService.addFeature(feature)
}

但是当我运行这个程序时,我得到了下面的错误:Argument of type 'Feature' is not assignable to parameter of type 'Feature'. Types of property 'on' are incompatible.
这个问题可以通过将库函数"addFeature"中的Feature类型更改为any类型来解决,这是我非常想避免的。在我的库中创建一个新的Feature()时,一切工作正常。

    • 我想要的**梦想的场景是在我的英语应用程序中,我希望能够从安装在my-lib中的包"ol"中导入"Feature"。

等:import { Feature} from 'my-lib/node_modules/ol';
如果有任何不清楚的地方,或者您需要进一步的信息,请随时询问。所提供的代码完全是伪代码,但应该提供与真实代码相同的信息。
先谢了!
我试着在我的Angular 应用程序和Angular 库中安装包"ol"(OpenLayers)。两者使用相同的版本。

2izufjch

2izufjch1#

我今天已经解决了这个问题,解决方案是在我的Angular 库中添加openLayers作为一个peerDependency,并像往常一样安装在使用库的应用程序中。

"peerDependencies": {
"@types/proj4": "^2.5.2",
"@types/ol": "^6.5.3",
"ol": "^7.2.3-dev.1676300784989",
"proj4": "^2.8.0" }

相关问题