Stratégie d'emplacement Hash en angulaire 2

J'essaie de créer une application avec stratégie de localisation de hash, mais elle n'ajoute pas le hash à l'url. Par exemple, lorsque je clique sur un bouton associé à {chemin: '/ sondages', nom: 'Sondages', composant: PollsComponent}, il charge la page avec cette URL: localhost: 3000 / sondages.

Que dois-je changer pour obtenir la stratégie de localisation de hachage? Pourquoi dois-je définir l'URL de base par défaut si je veux utiliser la stratégie de localisation de hash?

C'est le routage dans app.component.ts où tout le routage est défini:

import {Component} from 'angular2/core' import {HTTP_PROVIDERS, Http} from 'angular2/http'; import 'rxjs/Rx'; // load the full rxjs import {ROUTER_PROVIDERS, RouteConfig , ROUTER_DIRECTIVES} from 'angular2/router'; import { ResultsComponent } from './results/results.component' import { VotingCardsComponent } from './votingcards/votingcards.component' import { DashBoardComponent } from './dash/dash.component' import { PollsComponent } from './pollslist/pollslist.component' @Component({ selector: 'my-app', templateUrl: 'app/app.component.html', directives: [ROUTER_DIRECTIVES, ResultsComponent, VotingCardsComponent, DashBoardComponent], providers: [HTTP_PROVIDERS, ROUTER_PROVIDERS] }) @RouteConfig([ { path: '/vote', name: 'VotePage', component: VotingCardsComponent }, { path: '/votepoll/:id', name: 'VotePoll', component: VotingCardsComponent }, { path: '/results', name: 'Results', component: ResultsComponent }, { path: '/polls', name: 'Polls', component: PollsComponent }, { path: '/', name: 'DashBoard', component: DashBoardComponent, useAsDefault: true } ]) export class AppComponent { } 

Et c'est mon main.ts où je configure l'url de base:

 import {bootstrap} from 'angular2/platform/browser'; import {AppComponent} from './app.component'; //this is to avoid the href empty issue import {provide} from 'angular2/core'; import {APP_BASE_HREF, ROUTER_PROVIDERS} from 'angular2/router'; bootstrap(AppComponent, [ //this is to avoid the href empty issue ROUTER_PROVIDERS, provide(LocationStrategy, { useClass: HashLocationStrategy }), provide(APP_BASE_HREF, { useValue: '/' }) ]); 

ROUTER_PROVIDERS ne doit pas être ajouté aux composants enfants,

Seulement à

 providers: [ROUTER_PROVIDERS] 

Ou seulement pour

 bootstrap(AppComponent, [ROUTER_PROVIDERS]); 

HTTP_PROVIDERS sont, à mon avis aussi, un meilleur ajustement pour le composant racine ou bootstrap() mais il ne cesse rien pour les ajouter ailleurs.

(Voir aussi Erreur de routage avec angular 2 et IIS )

Vous pouvez utiliser l'option "UseHash" dans RouterModule.forRoot ().

 RouterModule.forRoot(appRoutes, {useHash: true}); 

https://discuss.atom.io/t/angular-2-routes-breaking-on-electron-app-refresh/28370/4

Tout a bien fonctionné avec l'exemple de code OP affiché avec ce qui est dans la réponse acceptée. Mais, en tant que note mineure, le format requis pour modifier la Stratégie d'emplacement Hash dans le fichier bootstrap à partir de RC.4 est ainsi:

 { provide: LocationStrategy, useClass: HashLocationStrategy },