Después de actualizar de Angular versión 8 a 10.
Ejecutar el comando - ng serve me da error -
ERROR en node_modules/ngx-tree-select/src/module.d.ts:11:56 - error TS2314: el tipo genérico 'ModuleWithProviders' requiere 1 tipo de argumento(s).
11 forRoot estático (opciones: TreeSelectDefaultOptions): ModuleWithProviders; ~~~~~~~~~~~~~~~~~~~
Este es mi archivo: front/webapp/node_modules/ngx-tree-select/src/module.d.ts
import { ModuleWithProviders } from '@angular/core'; import { TreeSelectDefaultOptions } from './models/tree-select-default-options'; import * as ɵngcc0 from '@angular/core'; import * as ɵngcc1 from './components/tree-select.component'; import * as ɵngcc2 from './components/tree-select-item.component'; import * as ɵngcc3 from './directives/off-click.directive'; import * as ɵngcc4 from './pipes/item.pipe'; import * as ɵngcc5 from '@angular/common'; import * as ɵngcc6 from '@angular/forms'; export declare class NgxTreeSelectModule { static forRoot(options: TreeSelectDefaultOptions): ModuleWithProviders; static ɵmod: ɵngcc0.ɵɵNgModuleDefWithMeta<NgxTreeSelectModule, [typeof ɵngcc1.TreeSelectComponent, typeof ɵngcc2.TreeSelectItemComponent, typeof ɵngcc3.OffClickDirective, typeof ɵngcc4.ItemPipe], [typeof ɵngcc5.CommonModule, typeof ɵngcc6.FormsModule], [typeof ɵngcc1.TreeSelectComponent]>; static ɵinj: ɵngcc0.ɵɵInjectorDef<NgxTreeSelectModule>; } //# sourceMappingURL=module.d.ts.mapPor favor vea la imagen para el error.
La solución para el mismo error en mi versión Angular 10.1.3 fue cambiar el parámetro de exportación a .
con error:
export const appRoutingProviders: any[] = []; export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);Después del cambio:
export const appRoutingProviders: any[] = []; export const routing: ModuleWithProviders<any> = RouterModule.forRoot(appRoutes);Una causa de esto es actualizar Angular a una versión más nueva (es decir, v10), pero tener una biblioteca JS más antigua que no funciona bien y también necesita ser actualizada. En mi caso recibí el siguiente error como el OP:
ERROR en [en el cargador] ./node_modules/ @ng-bootstrap/ng-bootstrap /popover/popover.module.d.ts:6:23 TS2314: el tipo genérico 'ModuleWithProviders' requiere 1 tipo de argumento(s).
Observe en mi caso que se llamó a la biblioteca infractora en particular, que era @ng-bootstrap . De hecho, estaba en una versión mucho más antigua:
"@ng-bootstrap/ng-bootstrap": "^2.0.0"
Pude actualizar el paquete a la versión 7.0.0 y el error desapareció y la aplicación se creó correctamente. La solución principal aquí es no incluir inmediatamente las correcciones recomendadas aquí ni usar <any> en lugar de un tipo. Es posible que deba actualizar otro paquete para que su aplicación sea compatible con la versión de Angular que se utiliza para solucionar el problema correctamente.
@ user9882419 tiene el mejor enfoque, creo. Aquí hay un ejemplo para ilustrar lo que está diciendo.
export class AppSharedModule { static forRoot(): ModuleWithProviders<AppSharedModule> { return { ngModule: AppSharedModule }; } }Para omitir este tipo de error, simplemente agregue su código:
declare module "@angular/core" { interface ModuleWithProviders<T = any> { ngModule: Type<T>; providers?: Provider[]; } }Nota: esto arreglará la verificación de tipo y permitirá continuar; si observa otras incompatibilidades de lib con Angular10, debe solicitar la actualización de lib o encontrar otra.
Solo necesita especificar el tipo (el nombre de la clase de módulo) entre ModuleWithProviders
Parece que esta biblioteca ngx-tree-select no ha evolucionado con las últimas versiones de Angular. Tal vez debería abrir una solicitud de relaciones públicas o un problema en el repositorio.
dado que recibió un error en los módulos de nodo, tiene un alcance limitado para corregirlo. Por lo tanto, intente obtener la última versión compatible con angular (su versión).
Simplemente proporcione "desconocido" como argumento de tipo. Tuve el mismo problema y lo resolví como en el siguiente fragmento
export const routingModule: ModuleWithProviders<unknown> = RouterModule.forRoot( routes );Tuve un montón de errores. Tuve que revisarlos uno por uno y actualizar los paquetes a versiones posteriores donde los editores ya habían solucionado esto. Mire el nombre del archivo y le dará una idea de qué paquete debe actualizarse. Al menos uno de los paquetes no tenía una actualización actual y tenía una acumulación masiva de problemas y solicitudes de extracción. No sé qué voy a hacer con eso. Puede que tenga que reemplazar ese paquete con otra cosa o usar una de las soluciones aquí.
Si tiene problemas en toastr.module.ts
Antes:-
export declare class ToastrModule { static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders; } export declare class ToastrComponentlessModule { static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders; }Después:-
export declare class ToastrModule { static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders<any>; } export declare class ToastrComponentlessModule { static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders<any>; }