首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >@types/arcgis-js-api in angular 5应用程序

@types/arcgis-js-api in angular 5应用程序
EN

Stack Overflow用户
提问于 2018-03-19 02:40:14
回答 1查看 614关注 0票数 6

我在angular5应用程序中使用arcgis-js-api类型。当我尝试导入多个组件中的类型时,我得到了未捕获的引用错误:未定义__esri。我已经在tsconfig.app.json文件的类型数组中包含了arcgis-js-api。这是我的代码。

代码语言:javascript
运行
复制
  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');
      });
    }

  }
EN

回答 1

Stack Overflow用户

发布于 2021-05-30 14:11:29

我发现这个解决方案对我很管用-

我创建了一个导入名称空间的模型文件,然后在需要的任何地方使用类型(有效地避免了错误"ReferenceError:__esri没有定义,不能在多个组件中使用这个名称空间“)。

示例:

在esri.models.ts文件中-

代码语言:javascript
运行
复制
import esri = __esri;  
export interface esriMapView extends esri.MapView {}
export interface esriLayerView extends esri.LayerView {}

在组件中

代码语言:javascript
运行
复制
import { esriMapView } from "../../modules/esri.models";
const mapView: esriMapView = new MapView({});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49351557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档