Angular2 路由中的 Const 参数
Const params in routes in Angular2
我需要在路线中保存当前选择的语言。
示例:
/en/login
/en/welcome
/ru/register
....
有没有一种简单的方法可以在路由上设置一些前缀,或者我应该在每条路由中设置语言?
主要想法是在模板中编写类似
的内容
[linkTo]="/welcome"
但结果在路由器中有类似
的东西
/en/welcome
P.S。我用 ngrx/router
创建一个存储语言前缀的 localStorage 项。
扩展路由器并覆盖导航方法。
当路由器被告知导航时,注入语言前缀。
如果您不喜欢扩展路由器的想法,请制作一个包装器,然后改用包装器。
@Injectable()
export class MyRouter {
constructor(private _router: Router){}
navigate(url: string){
var lang : string = localStorage.getItem("lang");
this._router.navigate(["/"+lang+"/"+url]);
}
}
更新
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
}
])
我需要在路线中保存当前选择的语言。
示例:
/en/login
/en/welcome
/ru/register
....
有没有一种简单的方法可以在路由上设置一些前缀,或者我应该在每条路由中设置语言?
主要想法是在模板中编写类似
的内容[linkTo]="/welcome"
但结果在路由器中有类似
的东西/en/welcome
P.S。我用 ngrx/router
创建一个存储语言前缀的 localStorage 项。
扩展路由器并覆盖导航方法。
当路由器被告知导航时,注入语言前缀。
如果您不喜欢扩展路由器的想法,请制作一个包装器,然后改用包装器。
@Injectable()
export class MyRouter {
constructor(private _router: Router){}
navigate(url: string){
var lang : string = localStorage.getItem("lang");
this._router.navigate(["/"+lang+"/"+url]);
}
}
更新
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
}
])