代码之家  ›  专栏  ›  技术社区  ›  Zazaeil

读取路由参数?

  •  2
  • Zazaeil  · 技术社区  · 6 年前

    我是新来的。 我们开始吧:

    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 . 我做错什么了吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kirk Larkin    6 年前

    问题是你用的是 queryParams 而不是 params 表示查询字符串参数,但 l 参数只是一个正常的参数,所以应该通过 参数 (或 paramMap