0

User Case: Wenn Anwendung im Webbrowser geöffnet ist, erhält Benutzer ändern- "Know your location" mit Optionen "Zulassen" und "Verweigern".Angular2 - Component variabler Wert eingestellt auf Callback-Funktion nicht in Vorlage aktualisiert

Ich habe folgenden Codebeispiel.

ngOnInit() { 
    if ("geolocation" in navigator) { 
    navigator.geolocation.getCurrentPosition((position) => { 
     this.latitude = position.coords.latitude; 
     this.longitude = position.coords.longitude; 
     this.zoom = 18; 
    }); 
    } 
} 

das funktioniert, wie ich, dass die endgültigen Werte der Breiten- und Längen sehen console.log können aktuelle Lage ist anders, wenn erlaubt es den Standardwert, den ich hart codiert.

Hier ist mein Problem dieser aktualisierten aktuellen Standort Änderungen können nicht in Vorlage zu sehen, wenn es {{latitude}} drucken und {{longitude}}

Ich habe versucht, ngZone und ChangeDetectorRef verwenden, aber war kein Erfolg

jemand

+0

Es funktioniert für mich ohne ngZone – yurzui

+0

Interessant. Ich dachte "Geolocation" ist eines der Beispiele, wo Zone benötigt wird. Haben sie es in zone.js behoben (nicht der Entwicklung gefolgt)? –

Antwort

2
helfen kann

Die Geolocation-API wird nicht von der Angulars-Zone abgedeckt. der Rückruf innerhalb winkelförmigen Stangen Zone wird hiermit ausdrücklich und Winkeländerungserkennung laufen Stellen führen und sicherstellen, dass die Ansicht aktualisiert:

constructor(private zone:NgZone) {} 

ngOnInit() { 
    if ("geolocation" in navigator) {     
    navigator.geolocation.getCurrentPosition((position) => { 
     this.zone.run(() => { 
     this.latitude = position.coords.latitude; 
     this.longitude = position.coords.longitude; 
     this.zoom = 18; 
     }); 
    }); 
    } 
} 
+1

http://take.ms/L8suZ Scheint Zonen-Patches 'Geolocation' – yurzui

+0

Toll, vielen Dank für das Update! –

+0

Hallo, Ich habe den exakt gleichen Code versucht, aber es funktioniert nicht für mich :( –

Verwandte Themen