Events
dari @ionic/angular
paket dihapus dari Ionic 5. Anda dapat melihat perubahan pada Ionic5 di sini .
Seperti yang disebutkan dalam perubahan yang melanggar, Anda harus menggunakan Observables
.
Misalnya, Anda dapat membuat layanan berikut:
import {Injectable} from '@angular/core';
import {Subject} from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class GlobalFooService {
private fooSubject = new Subject<any>();
publishSomeData(data: any) {
this.fooSubject.next(data);
}
getObservable(): Subject<any> {
return this.fooSubject;
}
}
Sekarang, Anda dapat berlangganan komponen apa pun seperti app.component.ts
:
@Component({
selector: 'app-root',
templateUrl: 'app.component.html',
styleUrls: ['app.component.scss']
})
export class AppComponent {
constructor(private globalFooService: GlobalFooService) {
this.initializeApp();
}
initializeApp() {
// other code
this.globalFooService.getObservable().subscribe((data) => {
console.log('Data received', data);
});
}
}
Sekarang, Anda hanya perlu memancarkan acara dari beberapa komponen lain:
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss']
})
export class HomePage {
constructor(private globalFooService: GlobalFooService) {
}
onSomeButtonClick() {
this.globalFooService.publishSomeData({
foo: 'bar'
});
}
}
Ini adalah solusi / contoh atau alternatif yang sangat sederhana, Events
tetapi Anda dapat mengubah kode Anda lebih jauh untuk menjadikannya acara yang diberi nama dengan topik.
Saya telah menulis sebuah blog tentang ini yang dapat memberikan Anda solusi berfitur lengkap sehingga dengan perubahan kode yang sangat sedikit, Anda dapat meningkatkan aplikasi Anda.
https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd