創建一個存儲語言前綴的localStorage項目。
擴展路由器並覆蓋導航方法。
當路由器被告知導航時,注入語言前綴。
如果你不喜歡擴展路由器的想法,做一個包裝,並使用包裝代替。
@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
}
])
不過我有一個問題。我創建了新的路由器,它擴展了ngrx路由器。但是,當我試圖向他提供,我有一個錯誤 *類型錯誤:無法讀取的未定義的屬性「getBaseHref」 * – Illorian
我只是把它變成引導 { \t \t提供:路由器, \t \t useClass:GlobalRouter } – Illorian
您需要在您的index.html文件中添加: ',在'' –
Colum