2016-04-16 15 views
10

Data questa struttura dell'URL (su cui non ho alcun controllo), come posso recuperare il frammento di hash utilizzando Angular2?Recupera il frammento di hash dall'URL con Angular2

http://your-redirect-uri#access_token=ACCESS-TOKEN

Il mio router fa rotta verso il componente corretto, ma tutto dopo oauth ottenere demoliti e non riesco a trovare il frammento hash in request.params o location.path. Condannato??

Router config:

@RouteConfig([ 
{path: '/welcome', name: 'Welcome', component: WelcomeComponent, useAsDefault: true}, 
{path: '/landing/oauth', name: 'Landing', component: LandingComponent} // this one 

])

risposta

19

Per chi ancora alla ricerca:

import { ActivatedRoute } from '@angular/router'; 

export class MyComponent { 

    constructor(
    private route: ActivatedRoute, 
) { } 

    myfunction(){ 
    this.route.fragment.subscribe((fragment: string) => { 
     console.log("My hash fragment is here => ", fragment) 
    }) 
    } 
} 
1

Ho avuto lo stesso problema richiedendo server di OAuth con response_type = token, e che reindirizza a %REDIRECT_URI%#access_token=:access_token&token_type=:token_type&expires_in=:expires_in.

Il problema è, per impostazione predefinita, l'accesso diretto al sotto-URL non viene instradato: nel tuo caso, %BASE_URL%/landing/oauth non verrà reindirizzato al componente LandingComponent.

ho fissato con questa configurazione:

import { bootstrap } from '@angular/platform-browser-dynamic'; 
import { provide } from '@angular/core'; 
import { APP_BASE_HREF } from '@angular/common'; 
import { ROUTER_PROVIDERS } from '@angular/router'; 

import { AppComponent } from './components/app/app.component'; 

bootstrap(AppComponent, [ 
    ROUTER_PROVIDERS, 
    provide(APP_BASE_HREF, { useValue: '/' }) // this line 
]); 
Problemi correlati