#angular #ionic-framework
#angular #ионный фреймворк
Вопрос:
Я показываю некоторый список из api на странице-A, со страницы-A, я перехожу на страницу-B, заполняю какую-то форму и отправляю, после отправки я вернулся на страницу-A. Теперь мне нужно обновить список на странице-A.
Как я могу узнать, что я вернулся со страницы-B -> Страницы-A.
Я использую Ionic-5.
Спасибо
Комментарии:
1. Что вы пробовали до сих пор?
Ответ №1:
Вы можете добиться этого, используя концепцию событий и подписки. Как показано ниже
Шаг 1: Создайте одну службу (поставщика) с именем apphelper
Шаг 2: запустите эту команду npm i rxjs
Шаг 3: импортируйте нижеприведенные вещи в apphelper.service.ts и
import { Subject, Subscription } from 'rxjs';
// Events
subscribe(topic: string, observer: (_: any) => void): Subscription {
if (!this.channels[topic]) {
this.channels[topic] = new Subject<any>();
}
return this.channels[topic].subscribe(observer);
}
publish(topic: string, data?: any): void {
const subject = this.channels[topic];
if (!subject) {
// Or you can create a new subject for future subscribers
return;
}
subject.next(data);
}
destroy(topic: string): null {
const subject = this.channels[topic];
if (!subject) {
return;
}
subject.complete();
delete this.channels[topic];
}
Теперь импортируйте сервис на страницу A и страницу B. После этого добавьте событие щелчка в кнопку «Назад» и запустите публикацию события, как показано ниже на странице B:
this.appHelper.publish("RELOAD_DATA");
И на странице событие подписки в конструкторе, как показано ниже:
this.appHelper.subscribe("RELOAD_DATA", (data: any) => {
// call the function as per your requirement
});
Комментарии:
1. да, я уже интегрировал NGXS для управления состоянием, я пытаюсь это использовать, просто любопытно, есть ли что-нибудь из коробки, предоставленной Ionic.
Ответ №2:
Вы можете использовать перехваты жизненного цикла Ionic:
ionViewWillEnter
Запускается, когда компонент, направленный на, собирается анимироваться в поле зрения.
ionViewWillLeave
Запускается, когда маршрутизация компонента из собирается анимироваться.
ionViewDidLeave
Запускается, когда маршрутизация компонента к завершила анимацию.
ionViewDidEnter
Запускается, когда маршрутизация компонента в> завершила анимацию.
Для получения дополнительной информации: Документация по перехватам жизненного цикла
Комментарии:
1. представление жизненного цикла не работает при возврате из навигации, поскольку компонент уже находится в стеке.
2. можете ли вы поделиться своим кодом маршрутизации, чтобы я мог взглянуть на него. также поделитесь своим текущим кодом жизненного цикла.
3. this.router.navigateByUrl(‘call-add’); вот как я перехожу на другой маршрут / страницу.
Ответ №3:
SERVICE booleanService
comingFromPageB: boolean;
СТРАНИЦА B
constructor(private booleanService: BooleanService){}
ionViewWillLeave(){
this.booleanService.comingFromPageB = true;
}
СТРАНИЦА A
constructor(private booleanService: BooleanService){}
ionViewWillEnter(){
if(this.booleanService.comingFromPageB){
- Do your stuff here (delete form...)
- Reset boolean : this.booleanService.comingFromPageB = false
}
}