TypeScript 2.4 agregó soporte para expresiones de importación dinámica (), que nos permiten cargar y ejecutar módulos ECMAScript de manera asincrónica a pedido.
Tratando de importar dinámicamente la localización pero enfrentando el problema con la exportación
Module not found: Error: Package path ./locales is not exported from package ....\node_modules\@angular\common (see exports field in .....\node_modules\@angular\common\package.json)
tengo el siguiente codigo
let angularLocale = convertAbpLocaleToAngularLocale(abp.localization.currentLanguage.name); import(`@angular/common/locales/${angularLocale}.js`) .then(module => { registerLocaleData(module.default); NgxBootstrapDatePickerConfigService.registerNgxBootstrapDatePickerLocales().then(_ => { resolve(true); abp.ui.clearBusy(); }); }, reject);
No estoy seguro de cómo puedo exportar esto, funcionaba bien con angular 12.
Agregar un sistema no funcionó
let angularLocale = convertAbpLocaleToAngularLocale(abp.localization.currentLanguage.name); System.import(`@angular/common/locales/${angularLocale}.js`) .then(module => { registerLocaleData(module.default); NgxBootstrapDatePickerConfigService.registerNgxBootstrapDatePickerLocales().then(_ => { resolve(true); abp.ui.clearBusy(); }); }, reject);
Referencia: https://github.com/angular/angular/issues/20487
Actualizar
No necesitamos usar System.import en estos días... Creo que una expresión de importación ES dinámica podría ser suficiente...
let angularLocale = convertAbpLocaleToAngularLocale(abp.localization.currentLanguage.name); import(`@angular/common/locales/${angularLocale}.js`).then(module => registerLocaleData(module.default));
Con el código anterior, todavía me enfrento a la excepción. En ese caso, estaba presionando angular/angular-cli#22154; este es un error del paquete web. https://github.com/angular/angular/issues/20487 https://github.com/angular/angular-cli/issues/22154
import( /* webpackExclude: /\.d\.ts$/ */ /* webpackMode: "lazy-once" */ /* webpackChunkName: "i18n-extra" */ `@/../node_modules/@angular/common/locales/${angularLocale}.mjs`)
Como se menciona en el problema https://github.com/angular/angular-cli/issues/22154 , debe actualizar la ruta de importación con /node_modules/@angular/common/locales/${locale}.mjs
.
El siguiente código me funciona en mi proyecto AspNetZero después de actualizar a la versión angular 13.
NOTA: Asegúrese de reiniciar el comando "ng serve" después de estos cambios para que el paquete web haga su magia.
async function registerLocales(resolve: (value?: boolean | Promise<boolean>) => void, reject: any, spinnerService: NgxSpinnerService) { if (shouldLoadLocale()) { let angularLocale = convertAbpLocaleToAngularLocale(abp.localization.currentLanguage.name); await import(`/node_modules/@angular/common/locales/${ angularLocale }.mjs`) .then(module => { registerLocaleData(module.default); NgxBootstrapDatePickerConfigService.registerNgxBootstrapDatePickerLocales().then(_ => { resolve(true); spinnerService.hide(); }); }, reject); } else { NgxBootstrapDatePickerConfigService.registerNgxBootstrapDatePickerLocales().then(_ => { resolve(true); spinnerService.hide(); }); }
}
Tuve el mismo problema que solucioné modificando la ruta de importación agregando 'node_modules/...'
código original:
import(`@angular/common/locales/${angularLocale}.js`)
código fijo
import(`/node_modules/@angular/common/locales/${angularLocale}.js`)