Tengo un proyecto angular, en este proyecto necesito usar el material angular Datepicker para seleccionar Fecha.
Mi proyecto es compatible con varios idiomas, y cuando cambio el idioma, necesito cambiar el valor del selector de fecha con el Adaptador de material angular por tiempo de ejecución de fecha local de idioma.
Por ejemplo, tengo el idioma persian y us-en en mi proyecto. Necesito cuando el idioma cambie a persian , el selector de fechas configure el PersianAdapter y cuando seleccione el idioma us-en , debe configurar Gregorian Adapter .
Cuando la página se vuelve a cargar, verifica el valor del idioma y establece el valor para el selector de fecha, pero necesito cambiar el valor de datepicket sin actualizar la página.
Estoy usando este código para el proveedor:
import { MaterialPersianDateAdapter, PERSIAN_DATE_FORMATS } from './material.persian-date.adapter'; import { GregorianDateAdapter } from './gregorian-date-adapter'; import { MAT_MOMENT_DATE_FORMATS } from './moment-date-format'; export function createDateProvider() { const lang = localStorage.getItem('language'); if (lang === 'fa') { return new MaterialPersianDateAdapter(); } else { return new GregorianDateAdapter(); } } export function getDateFormat() { const lang = localStorage.getItem('language'); if (lang === 'fa') { return PERSIAN_DATE_FORMATS; } else { return MAT_MOMENT_DATE_FORMATS; } }Módulo:
providers: [ { provide: DateAdapter, useFactory: createDateProvider, deps: [MAT_DATE_LOCALE] }, { provide: MAT_DATE_FORMATS, useFactory: getDateFormat } ]Cuando cambio el idioma al actualizar la página, funciona bien, pero cuando necesito cambiar el valor del proveedor para cambiar el valor del selector de fecha por el tiempo de ejecución del idioma, no funciona.
Escribí este código pero no funciona:
ngOnInit() : void { let injector = Injector.create([{ provide: DateAdapter, useValue: MaterialPersianDateAdapter, deps: [MAT_DATE_LOCALE] }, { provide: MAT_DATE_FORMATS, useFactory: getDateFormat } ]); }¿Cómo puedo cambiar el adaptador datepicker para el idioma seleccionado?