读取路由参数?
Reading route parameters?
我是 Angular 的新手。
我们开始吧:
const routes: Routes = [
{ path: '', redirectTo: '/ru/courses/categories', pathMatch: 'full' },
{ path: ':l/courses/categories', component: CourseCategoriesListComponent }
];
然后我得到了可注射的东西,负责提供正确翻译的东西:
@Injectable()
export class LanguageService {
constructor(public activatedRoute: ActivatedRoute) { }
private readonly map: { [languageCode: string]: (() => TranslatorBase) } = {
ru: () => new RussianTranslagor()
};
getTranslatorForCurrentLanguage(callback: (translatorBase: TranslatorBase) => void): void {
this.activatedRoute.queryParams.subscribe(
params => {
console.log(params);
// HERE IS THE PROBLEM!!!
const lang = params['l'];
if (lang) {
callback(this.map[lang]());
}
}
);
}
}
当我 运行 我的服务器到达 localhost:xxxxx
、queryParams
returns 空 params
对象时,我无法读取 :l
路由参数 的实际值。我是不是做错了什么?
更新:
我正在尝试读取 :l
参数,它是 "language" 的缩写。 ;)
这里的问题是您使用的是 queryParams
而不是 params
。 queryParams
代表查询字符串参数,但是你的l
参数只是一个普通参数,所以应该通过params
(或paramMap
)获得。
我是 Angular 的新手。 我们开始吧:
const routes: Routes = [
{ path: '', redirectTo: '/ru/courses/categories', pathMatch: 'full' },
{ path: ':l/courses/categories', component: CourseCategoriesListComponent }
];
然后我得到了可注射的东西,负责提供正确翻译的东西:
@Injectable()
export class LanguageService {
constructor(public activatedRoute: ActivatedRoute) { }
private readonly map: { [languageCode: string]: (() => TranslatorBase) } = {
ru: () => new RussianTranslagor()
};
getTranslatorForCurrentLanguage(callback: (translatorBase: TranslatorBase) => void): void {
this.activatedRoute.queryParams.subscribe(
params => {
console.log(params);
// HERE IS THE PROBLEM!!!
const lang = params['l'];
if (lang) {
callback(this.map[lang]());
}
}
);
}
}
当我 运行 我的服务器到达 localhost:xxxxx
、queryParams
returns 空 params
对象时,我无法读取 :l
路由参数 的实际值。我是不是做错了什么?
更新:
我正在尝试读取 :l
参数,它是 "language" 的缩写。 ;)
这里的问题是您使用的是 queryParams
而不是 params
。 queryParams
代表查询字符串参数,但是你的l
参数只是一个普通参数,所以应该通过params
(或paramMap
)获得。