Я использую NgPickDatetime в своем приложении Angular (https://danielykpan.github.io/date-time-picker/)), и у меня возникает проблема при попытке перевести метки и сообщения.
Я следую инструкциям в документации, и это работает нормально, но проблема в том, что когда я меняю язык сайта, ярлыки остаются на прежнем языке.
Мой код:
DateTime-locale.module.ts:
import { NgModule } from '@angular/core';
import { OwlDateTimeModule, OwlNativeDateTimeModule, OwlDateTimeIntl} from 'ng-pick-datetime';
import { DefaultIntl } from './datepicker-locale.component';
@NgModule({
imports: [OwlDateTimeModule, OwlNativeDateTimeModule],
providers: [
{provide: OwlDateTimeIntl, useClass: DefaultIntl},
],
})
export class DateTimeLocaleModule {
}
Datepicker-locale.component.ts:
import { OwlDateTimeIntl } from 'ng-pick-datetime';
export class DefaultIntl extends OwlDateTimeIntl {
public cancelBtnLabel = 'Annuleren';
public setBtnLabel = 'Opslaan';
private currentLang;
constructor() {
super();
this.getLang();
}
public getLang() {
this.currentLang = JSON.parse(localStorage.getItem("language"));
switch (this.currentLang.id) {
case 'en':
this.cancelBtnLabel = 'Cancel';
this.setBtnLabel = 'Set';
break;
case 'nl':
this.cancelBtnLabel = 'Annuleren';
this.setBtnLabel = 'Opslaan';
break;
default:
this.cancelBtnLabel = 'Annuleren';
this.setBtnLabel = 'Opslaan';
break;
}
}
};
Поэтому я пытаюсь добавить ngx-translate к компоненту и перезагрузить функцию getLang()
, когда пользователь меняет язык, но это не работает, потому что я получаю следующую ошибку:
Uncaught Error: Can't resolve all parameters for DefaultIntl: (?).
Полный код компонента с услугой перевода:
import { OwlDateTimeIntl } from 'ng-pick-datetime';
import { TranslateService } from '@ngx-translate/core';
export class DefaultIntl extends OwlDateTimeIntl {
public cancelBtnLabel = 'Annuleren';
public setBtnLabel = 'Opslaan';
private currentLang;
constructor(private translate: TranslateService) {
super();
this.getLang();
this.translate.onLangChange.subscribe(lang => {
this.getLang();
});
}
public getLang() {
this.currentLang = JSON.parse(localStorage.getItem("language"));
switch (this.currentLang.id) {
case 'en':
this.cancelBtnLabel = 'Cancel';
this.setBtnLabel = 'Set';
break;
case 'nl':
this.cancelBtnLabel = 'Annuleren';
this.setBtnLabel = 'Opslaan';
break;
default:
this.cancelBtnLabel = 'Annuleren';
this.setBtnLabel = 'Opslaan';
break;
}
}
};
Мне нужно использовать службу перевода, но я не могу сделать это в компоненте. Есть ли решение этой проблемы?
Спасибо !!!