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]());
}
}
);
}
}
当我运行我的服务器并到达 alocalhost:xxxxx
时,queryParams
返回空params
对象,这样我就无法读取:l
路由参数的实际值。我在那里做错了吗?
更新:
我正在尝试读取:l
参数,它是“语言”的缩写。;)
解决方案
这里的问题是您使用queryParams
而不是params
. queryParams
表示查询字符串参数,但您的l
参数只是一个普通参数,因此应该通过params
(或paramMap
)获取。
推荐阅读
- python - sympy lambdify 与元组中的函数参数?
- android - 默认情况下,AWS Pinpoint 在 react native 中选择退出 Android 用户的推送通知
- c++ - 如何检查升压融合序列是否是适应结构?
- react-native - 如何在 package.json 中包含 *forked* github 分支作为依赖项
- html - 如何使用文件应用在 iPhone 上查看结束编辑 html 文件?
- java - 如何解析邮递员收藏?
- docker - 如何在 docker 镜像中安装 @vue/cli
- c# - IntPtr.operator + (IntPtr, int) 不能调用 operator 或 accessor
- python - Beautifulsoup - 如何从's获取文本
- php - PHP Array POST UPDATE 只影响最后一行