Изменение не обнаружено, поскольку оно происходит за пределами угловой структуры в обратном вызове направления Google. У вас есть несколько вариантов. Я перечислю их от концептуально самых простых до самых сложных.
Обнаружение изменения силы
constructor(private ref: ChangeDetectorRef){}
....
if (String(status) === 'OK') {
directionsDisplay.setDirections(response);
this.data = "I'm modified in directionsService";
this.ref.detectChanges();
...
Запуск в зоне Angular2
constructor(private ngZone:NgZone) {}
...
this.ngZone.run(() => {
-- Run directions query here
});
...
Оберните вызов направления в наблюдаемую
const directionsObservable = Observbable.create(observer => {
directionsService.route({
origin: "terrell hills, tx",
destination: "alamo heights, tx",
travelMode: google.maps.TravelMode.DRIVING
}, (response, status) => {
if (String(status) === 'OK') {
directionsDisplay.setDirections(response);
observer.next("I'm modified in directionsService");
} else {
alert('Directions request failed due to ' + status);
}
});
directionsObservable.subscribe(text => this.data = text);
Я использовал очень простой пример того, как будет работать наблюдаемая. Вам, вероятно, следует извлечь вызов направлений для отдельной службы и использовать там наблюдаемый метод.