4 votes

Angular 2 RC5 <base href="..."> casse le routage

Je suis tombé sur un problème lié à <base href="..."> problème. Il semble qu'Angular 2 s'appuie fortement sur cette balise. Cependant, la balise elle-même a un impact sur <svg>...</svg> d'une manière qui n'est pas adaptée à mon cas ( il y a beaucoup d'informations correctement décrites sur cette question sur l'internet ). Mais lorsque je retire mon <base href="..."> l'application se casse instantanément.

Après avoir cherché une solution pendant quelques jours, j'ai trouvé le moyen de faire fonctionner mon application, du moins d'une manière ou d'une autre, sans <base href="...">

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    routing
  ],
  declarations: [
    AppComponent,
    HeroesComponent,
    DashboardComponent,
    HeroDetailComponent
  ],
  providers: [
    HeroService, {
      provide: APP_BASE_HREF, // <------------ this guy here saves the day
      useValue: '/'
    }
  ],
  bootstrap: [ AppComponent ]
})
export class AppModule {
}

Cependant, sans <base href="..."> l'application est devenue moins stable par rapport au routage. En fait, elle s'arrête et lève l'exception "taille maximale de la pile atteinte" lorsque j'essaie de recharger la page à partir d'une route autre que celle par défaut.

Je n'ai pas pu reproduire le problème avec plunkr mais je n'ai pas non plus pu faire tutoriel angulaire standard travailler sans <base href="...">

Voici les liens vers

Plunkr original

Plunkr modifié

Si vous ouvrez la console de modified one, vous verrez une erreur.

Il n'y a absolument aucune information sur cette question sur internet, je n'ai jamais eu affaire à <base href="..."> et je suis nouveau sur angular 2. Quel serait donc le meilleur point de départ pour étudier ce problème ?

enter image description here enter image description here

1voto

Günter Zöchbauer Points 21340

Vous pouvez fournir

{ provide: APP_BASE_HREF, useValue: '/' }

pour que le routeur passe outre <base href="..."> tandis que le SVG continue de dépendre uniquement de la <base href="..."> .

Voir aussi https://github.com/angular/angular/issues/8939

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X