gpt4 book ai didi

typescript - @types/arcgis-js-api 在 angular 5 应用程序中

转载 作者:行者123 更新时间:2023-12-04 12:03:41 25 4
gpt4 key购买 nike

我在我的 angular5 应用程序中使用 arcgis-js-api 类型。当我尝试在多个组件中导入类型时,我收到 Uncaught ReferenceError :__esri 未定义。
我已将 arcgis-js-api 包含到 tsconfig.app.json 文件中的 types 数组中。这是我的代码。

  import { Component, OnInit, Input, ViewChild, ElementRef } from 
'@angular/core';
import * as esriLoader from 'esri-loader';
import { environment } from '../../../environments/environment';
import Esri = __esri;

@Component({
selector: 'app-custom-widget',
templateUrl: './custom-widget.component.html',
styleUrls: ['./custom-widget.component.css']
})
export class CustomWidgetComponent implements OnInit {
private _mapView: Esri.MapView;
private _scriptOptions: any;

@ViewChild('customWidget') widgetElement: ElementRef;
@Input()
set mapView(mapView: Esri.MapView) {
if (!mapView) {
return;
}
this._mapView = mapView;
this.renderWidget();
}
get mapView(): Esri.MapView {
return this._mapView;
}

constructor() {
this._scriptOptions = {
url: environment.arcgisAPIVersion
};
}

ngOnInit() {

}

renderWidget(): void {
esriLoader.loadModules([
'esri/widgets/Widget'
], this._scriptOptions).then(([Widget]) => {
const widgetProperties: Esri.WidgetProperties = {
container: this.widgetElement.nativeElement
};

const widget: Esri.Widget = new Widget(widgetProperties);

this._mapView.ui.add(widget, 'bottom-right');
});
}

}

最佳答案

我发现这个解决方案对我有用-
我创建了一个导入命名空间的模型文件,然后在我需要的任何地方使用这些类型(有效地避免了错误“ReferenceError: __esri is not defined, cannot use this namespace in multiple components”)。
例子:
在 esri.models.ts 文件中 -

import esri = __esri;  
export interface esriMapView extends esri.MapView {}
export interface esriLayerView extends esri.LayerView {}
在组件中-
import { esriMapView } from "../../modules/esri.models";
const mapView: esriMapView = new MapView({});

关于typescript - @types/arcgis-js-api 在 angular 5 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com