Здравствуйте, я получаю строковое значение и хочу передать его другой функции. Так, например, если я получаю «eng», я хочу, чтобы это было «en». Я не хочу использовать slice или if. Я пытался сделать перечисление, но это не сработало.
ngOnInit(): void {
this.setLocaleDateFormat(this.translateService.currentLang);
}
setLocaleDateFormat(language: Languages): void {
this.dateAdapter.setLocale(language); }
export enum Languages {
'eng' = 'en',
'slk' = 'sk',
'cze' = 'cz',
}
Итак, я хочу передать значение и на основе какого-то шаблона изменить его на что-то другое. Я получаю eng, но я хочу, например, установить Locale на en.
Судя по вашему сообщению, this.translateService.currentLang
вернет «eng». Я сомневаюсь в этом, но возвращаясь к вашему вопросу. Языки не должны быть перечислением. Это должен быть постоянный объект.
export const Languages = {
eng: 'en',
slk: 'sk',
cze: 'cz',
};
setLocaleDateFormat(): void {
this.dateAdapter.setLocale(Languages[this.translateService.currentLang]);
}
Тип language
не Language
, который является "en" | "sk" | "cz"
, а keyof typeof Languages
.
function setLocale(locale: Languages) {
console.info('setLocale to', locale);
}
enum Languages {
'eng' = 'en',
'slk' = 'sk',
'cze' = 'cz',
}
function setLocaleDateFormat(language: keyof typeof Languages): void {
setLocale(Languages[language]);
}
setLocaleDateFormat('eng');
Сначала вам нужен ссылочный объект:
const map = {eng: 'en', slk: 'sk', cze: 'cz'};
Затем вы можете использовать его в своем коде следующим образом:
ngOnInit(): void {
this.setLocaleDateFormat(map[this.translateService.currentLang] || 'defaultLocale');
}
setLocaleDateFormat(language: string): void {
this.dateAdapter.setLocale(language);
}