角度错误-通用类型'ModuleWithProviders <T>'需要1个类型参数

时间:2020-07-06 11:29:00

标签: angular

从Angular版本8升级到10后。

运行-ng serve命令会给我错误-

node_modules / ngx-tree-select / src / module.d.ts:11:56中的错误-错误TS2314:通用类型'ModuleWithProviders'需要1个类型参数。

11个静态forRoot(选项:TreeSelectDefaultOptions):ModuleWithProviders; ~~~~~~~~~~~~~~~~~~

这是我的文件-fronent / 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.map

Kindly view the image for the error.

11 个答案:

答案 0 :(得分:15)

我相信

@ user9882419是最好的方法。这是一个例子来说明他在说什么

export class AppSharedModule {
  static forRoot(): ModuleWithProviders<AppSharedModule> {
    return {
      ngModule: AppSharedModule
    };
  }
}

答案 1 :(得分:11)

要跳过此类型错误,只需在您的代码中添加:

declare module "@angular/core" {
    interface ModuleWithProviders<T = any> {
        ngModule: Type<T>;
        providers?: Provider[];
    }
}

注意:这将修复类型检查并允许继续进行-如果您发现其他与Angular10不兼容的库-您需要要求库升级或找到另一个库。

答案 2 :(得分:4)

您只需要在ModuleWithProviders之间指定类型(模块类的名称)

答案 3 :(得分:4)

将此代码添加到您的 tsconfig.app.json "skipLibCheck": true,

enter image description here

答案 4 :(得分:3)

解决我的Angular 10.1.3版本中相同错误的方法是将export参数更改为。

有错误:

export const appRoutingProviders: any[] = [];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes);

更改后:

export const appRoutingProviders: any[] = [];
export const routing: ModuleWithProviders<any> = RouterModule.forRoot(appRoutes);

答案 5 :(得分:1)

造成这种情况的一个原因是将Angular升级到了较新的版本(即v10),但具有一个较旧的JS库,该库运行不佳,还需要进行更新。就我而言,我收到了以下错误,例如OP:

[加载器]中的错误 ./node_modules/@ng-bootstrap/ng-bootstrap/popover/popover.module.d.ts:6:23 TS2314:通用类型'ModuleWithProviders'需要1个类型参数。

在我的实例中,请注意特定的违规库是gl_FragColor,它确实是在一个较旧的版本上:

@ng-bootstrap

我能够将软件包更新为版本"@ng-bootstrap/ng-bootstrap": "^2.0.0",错误消失了,应用程序成功构建。此处的主要解决方案是不要立即抛出这里建议的修补程序或使用7.0.0代替类型。您可能需要更新另一个软件包,以使您的应用程序与用于正确解决此问题的Angular版本兼容。

答案 6 :(得分:1)

由于您在节点模块中遇到错误,您修复的范围有限。因此,请尝试获取与 angular(您的版本)兼容的最新版本。

答案 7 :(得分:0)

ngx-tree-select库似乎未随最新的Angular版本一起发展。也许您应该在回购中打开PR请求或问题。

答案 8 :(得分:0)

只需提供“未知”作为类型参数即可。 我遇到了同样的问题,并且按照以下代码段

的方式解决了该问题
export const routingModule: ModuleWithProviders<unknown> = RouterModule.forRoot(
  routes
);

答案 9 :(得分:0)

我有一堆错误。我不得不一一检查它们并将软件包更新到出版商已经修复此问题的更高版本。查看文件名,它会给你一个线索,哪些包需要更新。至少有一个软件包没有当前更新,并且有大量积压的问题和拉取请求。我不知道我该怎么办。我可能不得不用其他东西替换那个包,或者使用这里的解决方案之一。

答案 10 :(得分:0)

如果您在 toastr.module.ts 中遇到问题

之前:-

export declare class ToastrModule {
    static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders;
}
export declare class ToastrComponentlessModule {
    static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders;
}

之后:-

export declare class ToastrModule {
    static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders<any>;
}
export declare class ToastrComponentlessModule {
    static forRoot(config?: Partial<GlobalConfig>): ModuleWithProviders<any>;
}