artemitSoft
artemitSoft

Reputation: 302

Typescript class nested json cat

Hi I have nested json try to cast class but I take mistake.

class: export class Location { address: String city: String country: String position:{ lat:String, lng:String, } markers:{ lat:String, lng: String, label:String, draggable: boolean, iconUrl: String } }

My json code to cast class in angular5

placeMarker(pos) {
this.service.getGeocode(pos.coords.lat + "," + pos.coords.lng).subscribe(res => {
  var resp: any = res;
  console.log(resp)
  if (resp.results && resp.results.length > 0) {

    this.location.address = resp.results[0].formatted_address;
    this.location.position.lat = resp.results[0].geometry.location.lat;
    this.location.position.lng = resp.results[0].geometry.location.lng;

    resp.results[0].address_components.forEach(res=> {
      res.types.forEach(t=> {
        if (t == "administrative_area_level_1") {
          this.location.city = res.long_name;
        }
      });
    });
  }
})

}

I get below mistake when click marker in angular5, I can set adress but this.location.position.lat can not setted.

core.js:1350 ERROR TypeError: Cannot set property 'lat' of undefined
at SafeSubscriber.eval [as _next] (carpetfields.component.ts:55)
at SafeSubscriber.__tryOrUnsub (Subscriber.js:239)
at SafeSubscriber.next (Subscriber.js:186)
at Subscriber._next (Subscriber.js:127)
at Subscriber.next (Subscriber.js:91)
at MapSubscriber._next (map.js:85)
at MapSubscriber.Subscriber.next (Subscriber.js:91)
at XMLHttpRequest.onLoad (http.js:1556)
at ZoneDelegate.invokeTask (zone.js:425)
at Object.onInvokeTask (core.js:4620)

Upvotes: 1

Views: 174

Answers (1)

Judah Gabriel Himango
Judah Gabriel Himango

Reputation: 60021

You're setting this.location.address, but not setting this.location.position.

Your code should look like this instead:

this.location.address = resp.results[0].formatted_address;
this.location.position = {
   lat: resp.results[0].geometry.location.lat,
   lng: resp.results[0].geometry.location.lng
}

Upvotes: 2

Related Questions