Sto tentando di avviare un'applicazione base ionic2 e mi chiedevo se il mio tempo di caricamento iniziale dell'applicazione è un problema o meno. Quello che mi piacerebbe fare è impostare la pagina iniziale su una pagina di accesso se l'utente non è autenticato.Impostazione della pagina radice nelle app ionic2 e angular2 in base a un evento asincrono
Inizialmente avevo impostato la rootpage sulla home page e quindi quando la chiamata async tornava da localstorage, reindirizzavo la rootpage alla pagina di login se l'utente non era autenticato. Tuttavia, questo ha causato uno sfarfallio in cui vedono una pagina e poi vengono inviate a un'altra pagina.
Sembra che quello che voglio fare è attendere la chiamata di archiviazione locale prima di mostrare qualsiasi schermata.
La mia domanda è questa: come il codice ora si trova, ci sarà una condizione di errore in cui la piattaforma pronta si attiva prima che la pagina radice sia impostata, causando così una sorta di problema? Come devo gestire questa situazione in Ionic 2 e Angular 2? Devo fare in modo che la chiamata localStorage venga sincronizzata oppure devo inserirla in un altro evento o metodo che fa parte del ciclo di vita dell'app o della pagina in Angular 2?
Devo utilizzare una sorta di osservabile o attendere la sintassi?
export class MyApp {
rootPage: any;
local: Storage = new Storage(LocalStorage);
constructor(platform: Platform) {
this.local.get('user').then(user => {
if (user) {
this.rootPage = TabsPage;
} else {
this.rootPage = LoginPage;
}
});
platform.ready().then(() => {
// Will this ever fire before the rootpage is set?
StatusBar.styleDefault();
});
}
}
anche durante il controllo questa cosa si può avere la splashscreen aperto e manualmente nasconderlo dopo l'operazione è fatto in modo che l'utente abituato sapere che cosa sta accadendo, invece di utilizzare manichino pagina iniziale come la risposta qui sotto –