У меня есть унаследованное приложение, которое получает данные из конечной точки API. Мы обнаружили, что когда мы изменяем данные в API, изменения не отражаются в приложении. Если мы удаляем и переустанавливаем приложение на мобильном устройстве, то отображаются новые данные из API. Вот пример страницы сведений о здании:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from "@angular/router";
import { switchMap } from 'rxjs/operators';
import { Building } from "../shared/building/building";
import { HttpService } from "../services/http/http.service";
import {
getString,
setString
} from "application-settings";
@Component({
moduleId: module.id,
selector: 'building-detail',
templateUrl: 'building-detail.component.html',
styleUrls: ["./building-detail-common.css"],
providers: [ Building, HttpService ]
})
export class BuildingDetailComponent implements OnInit {
paramName: string;
constructor(
private route: ActivatedRoute,
public building: Building,
private httpService: HttpService) {
this.route.params.subscribe(
(params) => {
this.paramName = params['name']
}
);
}
ngOnInit() {
console.log("ON INIT FIRED " + this.paramName);
let buildingInfo = JSON.parse(getString("buildingInfo"));
for (let item of buildingInfo) {
if (item.attributes.title === this.paramName) {
this.building.name = item.attributes.title;
this.building.desc = item.attributes.body.value;
let imageEndpoint = "file/file/" + item.relationships.field_building_image.data.id;
let imageUrl = this.httpService.getData(imageEndpoint)
.subscribe(data => {
this.building.image = "https://nav.abtech.edu" + data['data'].attributes.url;
console.log("The building image URL is " + this.building.image);
}, (error) => {
console.log("Error is " + error);
});
}
}
}
}
Я рад поделиться другими файлами/кодом, если вы хотите взглянуть на них. Спасибо!
ngOnInit
— это то, что выполняется только при создании вашего компонента, оно больше никогда не будет выполняться. Также существует разница между запуском приложения и возобновлением работы. Если вы хотите обновлять данные каждый раз, когда пользователь открывает приложение, вы должны прослушивать событие возобновления и выполнять вызовы API внутри ngZone. - person Manoj   schedule 06.11.2018