2016-05-04 13 views
5

Durante l'utilizzo di HashLocationStrategy È possibile modificare l'itinerario modificando manualmente l'indirizzo nella barra degli indirizzi del browser senza ricaricare la pagina. Cioè navigazione mysite/#/home-mysite/#/profileAngular2 pathLocationStrategy: modifica dell'url causa ricarica della pagina

Tuttavia, se uso PathLocationStrategy (è la strategia posizione predefinita), devo pagina indesiderata ricarica, quando cerco di fare la stessa cosa. Cioè navigazione da mysite/home a mysite/profile

È possibile risolvere questo problema?

Sto usando angolare 2.0.0-beta17

+1

Difficile dire, senza vedere quello che stai effettivamente facendo. Come cambi il percorso? –

+0

Lo cambio manualmente nella barra degli indirizzi del browser. Cioè quando cambio 'mysite/#/home' in' mysite/#/profile' usando la strategia di posizione hash, cambia il percorso e non ricarica una pagina intera; poi quando passo la strategia di localizzazione della mia app su PathLocationStrategy e provo a cambiare 'mysite/home' in' mysite/profile', si aggiorna la pagina indesiderata. –

+0

Ho aggiornato la mia domanda di conseguenza, per essere più specifica –

risposta

5

Questo è "come da progetto". Quando si modifica solo il #..., non c'è nulla da inviare al server. La parte #... viene sempre elaborata dal browser e non viene mai inviata al server.

Quando si modifica la parte prima #, e se non si dispone di un # di ogni altra cosa è la prima- # -part allora il browser ha bisogno di fare una nuova richiesta al server per recuperare l'URL.

Se si utilizza l'API window.history... (https://developer.mozilla.org/en-US/docs/Web/API/History_API), è necessario indicare al browser di aggiornare semplicemente la barra degli indirizzi ma non chiamare il server. Il router angolare utilizza questa API quindi funziona dall'interno dell'app o quando si utilizza il pulsante Indietro o Avanti, ma non quando si modifica manualmente l'URL.

2

Se si desidera utilizzare percorsi di HTML5 (PathLocationStrategy) senza il NG2 pagina-aggiornamento sul cambio rotta, è necessario utilizzare la direttiva routerLink, vale a dire:

<a [routerLink]="['/my-page']">My Page</a> 
<a [routerLink]="['/my-other-page']">My Other Page</a> 

Alle importazioni @NgModule init:

RouterModule.forRoot([ 
    {path: '',    component: DefaultComponent}, 
    {path: 'my-page',  component: MyPageComponent}, 
    {path: 'my-other-page', component: MyOtherPageComponent} 
]); 
+0

Questa è in realtà la risposta giusta, carica magnificamente! – jemiloii

+1

@jemiloii Questo non risponde alla domanda. L'utilizzo di routerLink funziona se l'utente fa clic su tali collegamenti, ma se l'utente cambia l'indirizzo nella barra degli indirizzi da 'my-page' a' my-other-page' e preme Invio, la pagina verrà comunque ricaricata – Ryan

Problemi correlati