Angular http получает данные и помещает объект json в переменную - PullRequest
0 голосов
/ 12 октября 2018

Я хочу получить вложенные данные в officeid id, код, имя, короткое имя, accroym.и поместите его в индивидуальную переменную.

Как это сделать ???

Мой код:

{
  "id": 1,
  "code": "1000-001-1-01-001-001",
  "name": "PEACE AND ORDER PROGRAM",
  "isActive": true,
  "majorFinalOutput": null,

  "officeId": 1,

"office": {
  "id": 1,
  "code": "1-01-001",
  "name": "Office of the Governor",
  "shortName": "PGO",
  "accronym": "PGO",
  "website": null,
  "email": null,
  "telephone": null,
  "fax": null,
  "type": "1"
},

 "sectorId": 1,

"sector": {
  "id": 1,
  "name": "General Public Services Sector",
  "code": "1000",
  "parentId": null,
  "parent": null
},

  "dateCreated": "2018-10-02T14:23:04.913",
  "dateModified": null,
  "createdBy": null,
  "modifiedBy": null
}

 getProgram() {
     return this.httpClient.get('api/programs/' + idhold).subscribe((holdprogram: any[]) => {
    console.log(holdprogram);
    });

  return this.programService.editProgram().finally( () => {

  }).subscribe((holdprogram: any[]) => {
    console.log(holdprogram);
    console.log(holdprogram.office.id);
    console.log(holdprogram.office.name);
    console.log(holdprogram.office.shortname);
  }, error => {
    console.error(error);
  },
  () => {
  });
}

1 Ответ

0 голосов
/ 12 октября 2018

Обычный самый простой способ сохранить ссылку на переменную, полученную в запросе, - это использовать переменную компонента:

в компоненте:

public export class MyComponent {
    ...
    public office: any; // instead of using 'any', you could create an interface corresponding to the structure

    ...
}

в подписке:

.subscribe((holdprogram: any[]) => {
    this.office = holdprogram.office;
    console.log(this.office);
    // now this.office keeps a reference of your nested variable 'office'.
}, 

Если вам нужно сохранить ссылку на него между компонентами, это немного сложнее: вы можете сделать что-то похожее на уровне обслуживания (используя tap и локальную переменную), и вам понадобитсядобавить еще один механизм "обработки кэша".

...