本週为了 icon 把 Ionic 4 升级到 5 了,有点吃饱了没事干,升级之后才想到 Events 淘汰了,评估过后决定改用 RxJS 的 Subject 来替换原本的功能,底下就简单纪录一下相关写法。
先看看原本 Events 的写法,订阅:
constructor( private event: Events,) { this.event.subscribe('event:', (data) => { console.log(data) });}
发送:
this.event.publish('event:', 'gogo');
现在要换成 RxJS,先建立 service:
import {Injectable} from '@angular/core';import {Subject} from 'rxjs';@Injectable({ providedIn: 'root'})export class Service { result = new Subject(); constructor() { } receive(result) { this.result.next(result); }}
订阅:
this.service.result.subscribe((res: any) => { console.log(res);});
发送:
save(data) { this.service.receive(data);}
RxJS 的 Subject 还有其他几种,BehaviorSubject、ReplaySubject、AsyncSubject,大家可以在 Google 看看相关差异,找到适合自己情境的用法。
RxJS 官网连结