Esiste un approccio best practice in Angular2 + per rendere l'URL l'unica fonte di verità per lo stato dell'applicazione.
EmberJs ha Route Models, ogni segmento dell'URL può avere un modello e ogni modello di segmento URL viene risolto da sinistra a destra, quindi quando si risolve il modello per una pagina nidificata, è possibile utilizzare il modello dalle pagine padre perché il nidificato il modello di pagina non viene risolto fino a quando tutti i modelli principali non sono terminati.
Mi piacerebbe ottenere qualcosa di simile in Angular2 se si tratta di un approccio comune o consigliato.
Ho aggiunto NGRX e NGRX Router Store al mio progetto. Router Store invierà un'azione quando l'URL cambia, anche se sembra che io debba duplicare la mia logica di routing per usarla; Il carico utile dell'azione include l'URL, quindi in @Effects che gestiscono le azioni ROUTER_NAVIGATION che devo associare all'URL per decidere cosa deve accadere. È vero?
Supponiamo di avere una struttura URL come:
- / lista-di-cose /
- / lista-di-cose / cosa /
- / list-of-things / thing / thingy-1 /
- / lista-di-cose / cosa / thingy-2 /
Tutte queste rotte hanno bisogno dei dati di list-of-things . / thing / richiede i dati per / list-of-things / da caricare prima.
/ thingy-1 / e / thingy-2 / richiedono entrambi i dati caricati in / list-of-things / e < em> / cosa / .
Potrei usare un servizio per avvicinarmi a ciò che voglio. Il servizio sarebbe responsabile del recupero dei dati necessari a elenco-di-cose e cosa . Quindi, in Effetti che corrisponde agli URL per i percorsi nidificati, posso utilizzare lo stesso servizio e i dati non verrebbero richiesti nuovamente se sono già stati caricati. Se un utente arriva all'app tramite un link diretto e quindi i dati che sarebbero stati caricati quando si visita list-of-things non sono nello Store, lo stesso servizio verrebbe utilizzato per richiedere il i dati.
L'utilizzo di un servizio quando utilizzo NGRX e Effects sembra andare contro il punto degli effetti? C'è un approccio migliore?