Events
del @ionic/angular
paquete se eliminó de Ionic 5. Puede ver los cambios importantes en Ionic5 aquí .
Como se menciona en los cambios de última hora, debe usar Observables
.
Por ejemplo, puede crear el siguiente servicio:
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;
}
}
Ahora, puede suscribirse en cualquier 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);
});
}
}
Ahora, solo tiene que emitir el evento desde algún otro 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 es una solución / ejemplo muy simple o una alternativa, Events
pero puede modificar su código aún más para convertirlo en un evento de espacio de nombres con un tema.
He escrito un blog sobre esto que puede darle una solución con todas las funciones para que con muy poco cambio de código, pueda actualizar su aplicación.
https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd