我目前正在开发一个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)。两者使用相同的版本。
1条答案
按热度按时间2izufjch1#
我今天已经解决了这个问题,解决方案是在我的Angular 库中添加openLayers作为一个peerDependency,并像往常一样安装在使用库的应用程序中。