Ionic Angular中使用EventEmitter事件驱动实现不同页面通讯

有时候我们想在一个页面中改变另一个页面的状态。就比如我们在Login页面执行登录,登录成功后返回到User页面。在User页面中显示用户是否登录状态。 或者我们想在A页面执行事件通知B页面处理一些业务。

这个时候我们就可以用EventEmitter事件驱动来实现。

1、Eventemitter Github地址:

https://github.com/primus/eventemitter3

2、安装配置EventEmitter:

npm install --save eventemitter3

3、定义公共的服务配置EventEmitter:

import { Injectable} from '@angular/core';
import {EventEmitter} from 'eventemitter3';
@Injectable({
  providedIn: 'root'
})
export class EventService {
  public eventEmit: any;
  constructor() {
    // 定义发射事件
    this.eventEmit = new EventEmitter();
  }
}
4、用户中心页面监听事件广播

import { EventService } from '../services/event.service';


this.eventService.eventEmit.on('login',(result)=>{
      console.log('执行');
})


5、登录页面返回的时候发送广播

import { EventService } from '../services/event.service';
ionViewDidLeave(){
this.eventService.eventEmit.emit('login','登录页面退出了');
}