Sto provando a costruire un gestore di finestre con Angular 2. Fondamentalmente, voglio essere in grado di passare da una finestra all'altra (ovvero componenti iniettati in un router) senza perdere il loro stati. Ad esempio, sto modificando un modulo di informazioni sul prodotto quando passo a un elenco di clienti, poi torno al modulo del prodotto e lo trovo nello stesso stato ... È possibile?Angolare 2: scambio tra diversi componenti senza distruggerli
risposta
Ecco come ho superato questo requisito.
Una volta modificato il percorso, i componenti di Windows vengono distrutti. Quindi, per salvare lo stato tra quelle istanze di Windows, ho dovuto memorizzarlo manualmente in un servizio iniettato.
Per memorizzare e caricare lo stato per ciascun componente della finestra, ho utilizzato i ganci del ciclo di vita forniti dal router: onActivate (next, prev) e onDeactivate (next, prev).
EDIT
Nel frattempo, ho aperto un issue on Angular 2 github repo richiedere questa funzione.
come hai salvato il stato? usando l'oggetto 'window'? Non posso farlo funzionare. –
Ho lo stato memorizzato in un servizio che viene iniettato nelle mie viste – cangosta
Capisco la parte 'service' ma cosa hai archiviato esattamente. Ho fallito con l'istanza di 'class' e l'oggetto' window', cos'altro dovrei memorizzare? –
Checkout canReuse
sul router: canReuse in angular2 api docs
se si specifica che il router solito distruggere il componente quando si passa a partire da esso.
Ciao Dennis, hai ragione ... Guardando la documentazione, hai assolutamente ragione! Ma se ti immergi nei dettagli di implementazione (https://github.com/angular/angular/blob/b0009f03d510370d9782cf76197f95bb40d16c6a/modules/angular2/src/router/oututer.outlet), troverai questo: "Se il nuovo bambino il componente ha un Tipo diverso rispetto al componente figlio esistente, questo si risolverà in 'false'. Non è possibile riutilizzare un componente vecchio quando il nuovo componente è di Tipo diverso." In base al loro codice, l'hook di riutilizzo viene attivato solo se si sta navigando verso e da un componente dello stesso tipo. – cangosta
hmmm. Dovrei vederlo in pratica per capire. Il modo in cui l'ho letto è stato che se avessi registrato qualcosa su un componente non avresti potuto cambiare il tipo in seguito. ['Auto'] va sempre a CarsCmp se viene riutilizzato. –
L'ho guardato un po 'di più e sembra che tu abbia ragione riguardo a questa restrizione. Non sono sicuro che sia vero senza testarlo, ma sembra che tu non possa utilizzare due diversi tipi di componenti nello stesso percorso. Sembra una cosa importante per non parlare però. –
- 1. valore passando tra due componenti (pagine) in angolare 2
- 2. Angolare 2 - Aggiunta/rimozione componenti al volo
- 3. Angolare 2: collegamento a funzioni da modelli di componenti
- 4. Angolare 2: componenti che si rimuovono dal DOM
- 5. convalida livello modulo angolare 2 utilizzando i componenti
- 6. angolare 2 evento di cattura tra i componenti di pari livello
- 7. Angolare 2: instradamento senza modifica dell'URL
- 8. Stili condivisi tra i componenti in un'app Angular 2
- 9. angolare 2 differenza tra $ {valore} e {{valore}}
- 10. Alternando tra 2 diversi modelli in backbone.js
- 11. Ordina i DIV in ordine alfabetico senza distruggerli e ricrearli?
- 12. angolare 2 landing page
- 13. Angolare 2 CurrencyPipe spazio tra valuta e numero?
- 14. Comunicazione dei componenti in angolare 1.5
- 15. Componenti e direttive in angolare 1.5
- 16. Restituzione di componenti diversi in ambiti diversi con Autofac
- 17. Modificare i parametri del percorso senza ricaricare in angolare 2
- 18. Perché MKMetersBetweenMapPoints mi dà risultati diversi quando scambio i parametri?
- 19. Uso angolare 2 con elettrone (CLI angolare)
- 20. Come mantenere lo stato in angolare 2?
- 21. Hosting angolare 2 app
- 22. Angolare 2 ingressi esterni
- 23. aggiornamento angolare 1-2
- 24. Carica modello angolare 1.5 componenti tramite promessa
- 25. Diversi tipi di angolare Direttive modelli
- 26. Dagger Dipendenze da 2 componenti
- 27. Indici trucco usato per diversi componenti
- 28. Scambio di valori tra due colonne utilizzando data.table
- 29. Stile dinamicoUrl in angolare 2?
- 30. Polimorfismo tra componenti angolari2
In altre parole, esiste un modo per impedire che i componenti vengano distrutti quando navighiamo su un altro componente? – cangosta