Erstellen Sie ein localStorage-Element, das das Sprachenpräfix speichert.
Erweitern Sie den Router und überschreiben Sie die Navigationsmethode.
Wenn der Router aufgefordert wird zu navigieren, injizieren Sie das Sprachpräfix.
Wenn Ihnen der Gedanke, den Router zu erweitern, nicht gefällt, erstellen Sie einen Wrapper und verwenden Sie stattdessen den Wrapper.
@Injectable()
export class MyRouter {
constructor(private _router: Router){}
navigate(url: string){
var lang : string = localStorage.getItem("lang");
this._router.navigate(["/"+lang+"/"+url]);
}
}
UPDATE
import { Router } from "@ngrx/router";
import { LocationStrategy } from "@angular/common";
import { Injectable } from "@angular/core";
@Injectable()
export class GlobalRouter extends Router {
constructor(public platformStrategy: LocationStrategy) { // ANGULAR 2 DEPENDENCY INJECTOR SHOULD TAKE OVER
// it's not working
alert("constructor");
super(platformStrategy);
}
normalize(url: string): string {
let router = super.normalize(url);
alert(`normalize router ${router}`);
return router;
}
}
bootstrap(AcademyApp, [
HTTP_PROVIDERS,
provideStore(reducer),
runEffects(effects),
connectRouterToStore(),
provideRouter(routes),
provideDB(schema),
actions,
services,
provideForms(),
disableDeprecatedForms(),
FORM_PROVIDERS,
{
provide : Router,
useClass: GlobalRouter
}
])
Noch habe ich eine Frage. Ich habe neue Router, die ngrx Router erweitern. Aber wenn ich versuche, ihn zu schaffen, habe ich einen Fehler * Typeerror: kann nicht lesen Eigenschaft 'getBaseHref' undefinierte * – Illorian
ich es nur in setzen Bootstrap { \t \t bieten: Router, \t \t useClass: GlobalRouter } – Illorian
müssen Sie hinzufügen: ' ' in Ihre index.html Datei, direkt unter der '' –
Colum