Ionic3 Events (опубликовать) не работает - PullRequest
0 голосов
/ 26 июня 2018

У меня есть код

В login.ts я делаю

this._events.publish('user:created', 'val', Date.now());

На другой странице я делаю

 this._events.subscribe('user:created', (user,time) => {
  // user and time are the same arguments passed in `events.publish(user, time)`
  console.log('Welcome', user, 'at', time);
});

Но ничего не происходит в _events.subscribe . Не работает, нет console.log.

Что я делаю не так.

Ответы [ 4 ]

0 голосов
/ 09 июля 2019

Другие ответы частично верны, но если вы собираетесь использовать подписку внутри конструктора, вы должны убедиться, что ваш издатель публикует после того, как ваша вторая страница уже подписана.

Это работаеткогда у вас есть подписчики , вы можете использовать:

ionViewDidLeave() {
    this.events.publish('queue:name', object);
}
0 голосов
/ 26 июня 2018

Похоже, вы пытаетесь общаться между 2 страницами? По моему опыту, использование ионных событий не очень полезно для общения между 2 страницами, если у вас нет посредника. Если одна страница инициирует событие, скорее всего, другая страница не будет создана для прослушивания события.

Страницы, безусловно, могут публиковать события. Подписки, скорее всего, будут более успешными в сервисе / провайдере или в app.component.ts. Затем они могут реагировать на опубликованные события и переходить на другую страницу или предоставлять свойства, которыми манипулировали события, которые страницы могут использовать по мере необходимости.

0 голосов
/ 27 июня 2018

Вы можете вызвать метод публикации событий после входа в систему.

Объявление переменной в вашем компоненте .

Например: Некоторые: любые

Опубликуйте событие любым способом.

this._events.publish («пользователь: создан», this.some = «data», Date.now ());

Тогда вы можете подписаться на события в конструкторе другой страницы.

constructor(private events: Events) {
    this._events.subscribe('user:created', (user,time) => {
      console.log('Welcome', user, 'at', time);
    });
}
0 голосов
/ 26 июня 2018

Поместите код подписки на ваше событие в конструктор другой страницы.

constructor(private events: Events) {
    events.subscribe('user:created', (user,time) => {
      // user and time are the same arguments passed in `events.publish(user, time)`
      console.log('Welcome', user, 'at', time);
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...