Events
dal @ionic/angular
pacchetto ha rimosso dal ionico 5. È possibile visualizzare i cambiamenti di rottura Ionic5 qui .
Come accennato nelle ultime modifiche, è necessario utilizzare Observables
.
Ad esempio, è possibile creare il seguente servizio:
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;
}
}
Ora puoi iscriverti a qualsiasi componente come 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);
});
}
}
Ora, devi solo emettere l'evento da qualche altro 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'
});
}
}
Questa è una soluzione / esempio o un'alternativa molto semplice Events
ma è possibile modificare ulteriormente il codice per renderlo un evento con spaziatura dei nomi con un argomento.
Ho scritto un blog su questo che può darti una soluzione completa in modo che con molto meno modifica del codice, puoi aggiornare la tua app.
https://medium.com/wizpanda/dealing-with-breaking-change-in-ionic-5-db3ba711dfcd