2017-06-16 3 views
0

Lorsque j'essaie d'ouvrir les routes Angular 2 à partir de la barre d'adresse, je reçois continuellement les réponses http 404, cependant la navigation vers les routes utilisant des ancres avec les directives "routerLink" fonctionne sans problème. J'ai essayé de modifier mon fichier web.config pour réécrire l'url comme indiqué dans Angular's Deployment Guide mais cela casse généralement mon routage. Enfin, j'ai inclus <base href="/"> dans mon fichier index.html, mais cela n'a pas aidé non plus. Toute aide de la communauté est très appréciée!Angular 2 Routing - Open Links de la barre d'adresse

Voici mon code composant de routage:

import { NgModule } from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 
import { ClientsComponent } from './clients.component'; 

const routes: Routes = [ 

    { path: 'clients', component: ClientsComponent }, 
    //^This does not work from address bar, only from routerLinks. 
    { 
     path: '**', 
     redirectTo: '', 
     pathMatch: 'full' 
    }, 
]; 

@NgModule({ 
    imports: [RouterModule.forRoot(routes)], 
    exports: [RouterModule] 
}) 

export class AppRoutingModule { } 
+0

Vous pouvez facilement résoudre ce problème enable '' # routage basé en disant '[RouterModule.forRoot (routes, {useHash: true})]' si vous n'avez pas besoin 'html5mode' routage –

+0

Merci Pankaj, cela a fonctionné, mais je préférerais ne pas avoir le symbole # dans mes urls. On dirait une solution de contournement "hacky". Est-ce juste un problème connu avec Angular 2 et IIS? – DotNetDev

+0

Non, cela peut arriver avec n'importe quel serveur .. pas spécifiquement avec IIS. Vous devez configurer votre serveur pour gérer cette requête. Puis-je savoir quel chargeur de module vous utilisez 'systemjs' /' weback'? –

Répondre

1

Essayez le réglage usehash true, cela devrait résoudre votre problème.

RouterModule.forRoot(routes, { useHash: true }) 
+1

Merci Mani, Panaj a offert la même chose dans son commentaire. Cette solution fonctionne, mais je préfère ne pas avoir le symbole # dans mes urls. – DotNetDev

+0

Terminé en activant "useHash" car je ne pouvais pas trouver une meilleure solution. Merci! – DotNetDev