angular - Läsa ruttparametrar?


Jag är ny på Angular. Här kör vi:

const routes: Routes = [
  { path: '', redirectTo: '/ru/courses/categories', pathMatch: 'full' },
  { path: ':l/courses/categories', component: CourseCategoriesListComponent }
];

Sedan fick jag något injicerbart, något som ansvarar för att ge korrekt översättning:

@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]());
        }
      }
    );
  }
}

När jag kör min server och går till localhost:xxxxx, returnerar queryParams ett tomt params-objekt, så att jag inte kan läsa det faktiska värdet av :l-routparametern. Gör jag något fel där?

UPPDATERING: Jag försöker läsa :l-parametern, som är en förkortning för "språk". ;)

Svar #1

Problemet här är att du använder queryParams istället för params. queryParams representerar query-strängens parametrar, men din l-parameter är bara en vanlig parameter och bör därför hämtas genom params (eller paramMap).