Events
do @ionic/angular
pacote foi removido do Ionic 5. Você pode ver as alterações mais recentes no Ionic5 aqui .
Como é mencionado nas mudanças mais recentes, você deve usar Observables
.
Por exemplo, você pode criar o seguinte serviço:
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;
}
}
Agora, você pode se inscrever em qualquer componente como 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);
});
}
}
Agora, você só precisa emitir o evento de algum outro componente:
@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'
});
}
}
Esta é uma solução / exemplo ou alternativa muito simples do, Events
mas você pode ajustar ainda mais seu código para torná-lo um evento no espaço de nomes com um tópico.
Eu escrevi um blog sobre isso, que pode oferecer uma solução completa para que, com muito menos alteração de código, você possa atualizar seu aplicativo.
https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd