OpenLayers3在Style函数中使用Angular类属性

OpenLayers3在Style函数中使用Angular类属性,angular,openlayers-3,Angular,Openlayers 3,我创建了一个Angular2/4应用程序,它使用OpenLayers3为沙盒游戏Wurm Online渲染一个岛屿的地图。它工作得相当漂亮,取代了我从纯JS创建的更老更笨拙的版本 当前演示: 回购代码: 我想向最终用户提供定制屏幕上呈现的某些功能的颜色的能力。最后,我想使用localStorage概念来保存用户偏好 我希望能起作用的是不起作用的:将向量层的StyleFunction中的style属性设置为Angular类属性值 基本概念 在这个伪代码示例中,deedColor Angular类属

我创建了一个Angular2/4应用程序,它使用OpenLayers3为沙盒游戏Wurm Online渲染一个岛屿的地图。它工作得相当漂亮,取代了我从纯JS创建的更老更笨拙的版本

当前演示:

回购代码:

我想向最终用户提供定制屏幕上呈现的某些功能的颜色的能力。最后,我想使用localStorage概念来保存用户偏好

我希望能起作用的是不起作用的:将向量层的StyleFunction中的style属性设置为Angular类属性值

基本概念

在这个伪代码示例中,deedColor Angular类属性设置为一个值,然后我尝试在style函数中使用它:

export class AppComponent {
    deedColor: string = "rgba(255,0,0,0.4)";

    var deedStyleFunction = function (feature, resolution) {
        return [
        new ol.style.Style({
          image: new ol.style.RegularShape({
              points: 4,
              radius: 11 / resolution,
              angle: Math.PI / 4,
              fill: new ol.style.Fill({
                  color: this.deedColor
           }),
        })
      ]
    }

    // hundreds of other lines
}
遗憾的是,style函数无法计算Angular类属性:

ERROR TypeError: Cannot read property 'deedColor' of undefined
经过一些实验,我似乎无法从OL StyleFunction中访问任何角度对象


有什么想法吗?

这可能是一个范围问题-尝试将您的函数绑定到ng对象:

deedStyleFunction = function(feature, resolution) {

}.bind(this);