首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >点击angular2打开图层显示详细信息

点击angular2打开图层显示详细信息
EN

Stack Overflow用户
提问于 2016-11-22 22:39:43
回答 2查看 942关注 0票数 0

在angular2组件中,在ngOnInit中,我希望在openlayers上单击元素id。这是我的密码:

代码语言:javascript
运行
复制
map.on("click", (e)=> {
    map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
        let id: number=feature.getId();
        this.myService.getFeatureDetail(id)
          .suscribe(data => this.myArray = data)
    })
});

但是,当我单击map时,我得到一个错误,无法调用未定义的函数'getFeatureDetail‘,我也试图保存全局变量上的id,但它不能解决我的问题。

EN

Stack Overflow用户

发布于 2017-06-09 09:37:39

问题是,您正在将this的值丢失到回调范围中,因为它引用的是另一个没有myService实例的对象。

如果要将对通知对象的引用保存到另一个变量(_thisselfme等)中,它以后可以使用该变量。

请跟随此链接获取更多详细信息

代码语言:javascript
运行
复制
map.on("click", (e)=> {
        var _this = this;
        map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
            let id: number=feature.getId();
            _this.myService.getFeatureDetail(id)
              .suscribe(data => this.myArray = data)
        })
    });

@致命的答案是有效的,因为Lambda (Fat箭头)函数做的完全相同(如果它被编译成ES5),是的,这是最适合这种情况的方法。

但是了解幕后发生的事情对于某些情况来说是至关重要的。

请同时阅读此(2分钟阅读) 文章

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40752972

复制
相关文章

相似问题

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