正在读取路线参数?

时间:2018-09-13 19:29:29

标签: angular typescript angular-router

我是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对象,这样我无法读取{{1}的实际值}路由参数。我在那里做错了吗?

更新: 我正在尝试读取:l参数,该参数是“语言”的缩写。 ;)

1 个答案:

答案 0 :(得分:0)

这里的问题是您使用的是queryParams而不是paramsqueryParams代表查询字符串参数,但是您的l参数只是一个普通参数,因此应通过params(或paramMap)获得。