Events
từ @ionic/angular
gói đã bị xóa khỏi Ionic 5. Bạn có thể thấy những thay đổi đột phá trong Ionic5 tại đây .
Như đã đề cập trong các thay đổi đột phá, bạn nên sử dụng Observables
.
Ví dụ: bạn có thể tạo dịch vụ sau:
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;
}
}
Bây giờ, bạn có thể đăng ký trong bất kỳ thành phần nào như 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);
});
}
}
Bây giờ, bạn chỉ cần phát ra sự kiện từ một số thành phần khác:
@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'
});
}
}
Đây là một giải pháp / ví dụ rất đơn giản hoặc thay thế Events
nhưng bạn có thể điều chỉnh mã của mình hơn nữa để biến nó thành một sự kiện được đặt tên với một chủ đề.
Tôi đã viết một blog về điều này có thể cung cấp cho bạn một giải pháp đầy đủ tính năng để với rất ít thay đổi mã, bạn có thể nâng cấp ứng dụng của mình.
https://medium.com/wizpanda/deals-with-breaking-change-in-ionic-5-db3ba711dfcd