angular - 读取路由参数?
我对 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 返回空的 params 对象,这样 我无法读取 :l 路由参数的实际值。我是不是哪里做错了?
更新:我正在尝试读取 :l 参数,它是“language”的缩写。 ;)
答案#1
这里的问题是你使用了 queryParams 而不是 params。queryParams 表示查询字符串参数,但你的 l 参数只是一个普通参数,因此应该通过 params(或 paramMap)来获取。