2016-04-03 84 views
0

我想創建一個函數來獲取位置值低於使用共享服務將它傳遞給所有的組件是我ngOnInit功能打字稿邏輯問題

this.input = document.getElementById('google_places_ac'); 
     var autocomplete = new google.maps.places.Autocomplete(this.input, { types: ['(cities)']}); 
     google.maps.event.addListener(autocomplete, 'place_changed', function() { 
      var place=autocomplete.getPlace(); 
      this.setValue(place.address_components[3].long_name, place.address_components[2].long_name, place.address_components[1].long_name); 

     }); 

問題它不承認this.setvalue函數與我的共享服務或任何變量與this.variable共享值,它的JavaScript「這個」問題。並且我甚至無法讓我的構造函數使用這個函數,它在getElmentById處引發錯誤。

有帶箭頭的功能,所有的解決方案,但我不知道如何使用它在這種情況下,請幫我..

回答

1

place_changed內-callback關鍵字this點自動完成實例。

你需要創建一個閉包:

var instance = this, 
    autocomplete; 
instance.input = document.getElementById('google_places_ac'); 
autocomplete = new google.maps.places.Autocomplete(instance.input, { 
        types: ['(cities)']}); 

google.maps.event.addListener(autocomplete, 'place_changed', function() { 
    var place=this.getPlace(); 
    instance.setValue(place.address_components[3].long_name,   
        place.address_components[2].long_name, 
        place.address_components[1].long_name); 
}); 
+0

VAR實例=這一點;正在工作,我沒有得到任何錯誤,但它沒有更新視圖上的值應該爲此創建一個新的問題,或者我應該更新與我的sharedservice功能的問題? – Ironsun

+0

您好我已經創建了新的問題,如果你能幫助我,它會很好http://stackoverflow.com/questions/36387480/value-not-updating-in-the-view-after-data-update-angular2-and -typescript – Ironsun