Добрый день, пожалуйста, мне нужна ваша помощь, я заметил, что мое приложение ioni c не обнаруживает изменения при обновлении. У меня есть страница профиля, которая отображает данные аутентифицированных пользователей из API (т.е. имя пользователя и адрес электронной почты). Кроме того, страница profile_edit, которая обновляет данные пользователя. Но я заметил, что когда я обновляю данные пользователя и перехожу на страницу профиля, изменение не отражается на странице профиля, если я не перейду на другую страницу и обратно, пока не обнаружу изменение. Я пытался использовать BehaviourSubject, но я не знаю, как это реализовать. Я потратил несколько дней на это, пожалуйста, мне нужна ваша помощь. Спасибо. Мой код ниже.
profile.page.ts
public customerData: any
constructor ( WC: WoocommerceService) {
}
ngOnInit() {
// this retrieve authenticated user id
this.isUserLoggedIn = localStorage.getItem('currentUserId');
// this retrieve user data from an api call
this.WC.getUserInfo(this.isUserLoggedIn).subscribe((data)=>{
this.customerData = data;
});
}
profile. html
<ion-col size="12">
<ion-label *ngIf="customerData" class="ion-text-center">
<p>{{ customerData.first_name}} {{ customerData.last_name}}</p>
<ion-card-subtitle>{{customerData.email}}</ion-card-subtitle>
</ion-label>
</ion-col>
Сервис Woocoomerce
export class WoocommerceService {
private authenticationState = new BehaviorSubject<any>([]);
data = this.authenticationState.asObservable();
//getting authenticated users details from woocommerce
getUserInfo(id){
this.apiUrl = `${this.siteUrl}${this.woocommercePath}customers/${id}?consumer_key=${this.consumerKey}&consumer_secret=${this.consumerSecret}`;
console.log('API url for retrive customer: ', this.apiUrl);
this.customerData = this.http.get(this.apiUrl);
// STORE WHATEVER DATA YOU WANT IN THE SUBJECT
this.authenticationState.next(this.customerData);
return this.customerData;
}
// this update user data
updateCustomerData(id, customerDataUpdated){
let headers = new HttpHeaders ({
"Content-Type" : "application/json"
});
this.apiUrl = `${this.siteUrl}${this.woocommercePath}customers/${id}?consumer_key=${this.consumerKey}&consumer_secret=${this.consumerSecret}`;
// console.log('API url for retrive customer data: ', this.apiUrl);
return new Promise((resolve, reject) => {
this.http.put(this.apiUrl, customerDataUpdated, {headers} ).subscribe(
response => {
resolve(response);
this.authenticationState.next(this.customerData);
console.log('Customer Data Updated: ', response);
},
error => {
resolve(error);
console.log('Customer Data Updated failed ', error);
}
)
});
}
}