2016-12-08 3 views
1

プロパティで定義済みのメソッドとの新しい対話を作成するときにコンポーネント参照を保持する必要があります。ですから、例えば:DrawComponent.tsでAngular 2 + Openlayers 3、関数をインタラクションに追加するときにコンポーネント参照を失う

@Input() map:any; 
layer:any; 

// Filters functions 
layerFilter(itemLayer:any) { 
    console.log(this) 
    return (itemLayer === this.layer); 
}; 

// Init select interaction 
select = new ol.interaction.Select({ 
    layers: this.layerFilter 
}); 

// Add select interaction to the map 
this.map.addInteraction(this.select); 

私は私のコンポーネントの参照を失うのでlayerFilterリターンNULL内部のコンソールログ。

解決策や説明がありますか?

答えて

1

)(関数.bindに私の方法に私のコンポーネントのコンテキストをバインドします。

@Input() map:any; 
layer:any; 

// Filters functions 
layerFilter = (itemLayer:any) => { 
    console.log(this) 
    return (itemLayer === this.layer); 
}; 

// Init select interaction 
select = new ol.interaction.Select({ 
    layers: this.layerFilter 
}); 

// Add select interaction to the map 
this.map.addInteraction(this.select); 
1

同じ問題を抱える人にとって、私は解決策を見つけましたが、それが良いのかどうかわかりません。

私はたぶん、あなたが変更されてから、「この」文脈を避けるために、矢印の機能を使用することができ

// Init select interaction 
select = new ol.interaction.Select({ 
    layers: this.layerFilter.bind(this); 
}); 
関連する問題