Come sincronizzare lo stato dell'applicazione con lo stato del router in Angular 2

1

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?

    
posta Mike Broughton 08.05.2018 - 16:08
fonte

0 risposte

Leggi altre domande sui tag