网站搜索

angular - 类型 'ModuleWithProviders' 必须有一个返回迭代器的 '[Symbol.iterator]()' 方法.ts(2488)


我尝试使用 Ngx-admin 并设置主题,但出现错误:类型 'ModuleWithProviders' 必须有一个返回迭代器的 'Symbol.iterator' 方法。ts(2488) 我该如何解决这个错误?请帮帮我

export class ThemeModule {
    static forRoot(): ModuleWithProviders<ThemeModule> {
        return {
            ngModule: ThemeModule,
            providers: [
                ...NbThemeModule.forRoot(
                    {
                        name: 'default',
                    },
                    [DEFAULT_THEME, COSMIC_THEME, DARK_THEME],
                    null,
                    NbLayoutDirection.RTL
                    
                ),
            ],
        };
    }
}

答案#1

问题出在紧跟扩展运算符之后的内容上。

改用这种方法。

const nbThemeModule: any = NbThemeModule.forRoot(
                {
                    name: 'default',
                },
                [DEFAULT_THEME, COSMIC_THEME, DARK_THEME],
                null,
                NbLayoutDirection.RTL
                
            )

然后在 @ngModule 中,

export class ThemeModule {
  static forRoot(): ModuleWithProviders<ThemeModule> {
    return {
      ngModule: ThemeModule,
      providers: [
        ...nbThemeModule,
      ],
    };
  }
}

这将修复这个问题,这只是一个临时的解决方法。

答案#2

我认为这是由于 tsconfig.json 中的严格编译器选项标志引起的。

在我的情况下,一个简单的解决方法是:

export class ThemeModule {
  static forRoot(): ModuleWithProviders<ThemeModule> {
    return {
      ngModule: ThemeModule,
      providers: [
        ...NbThemeModule.forRoot(
          {
            name: 'default',
          },
          [ DEFAULT_THEME, COSMIC_THEME, CORPORATE_THEME, DARK_THEME ],
        ).providers || [],
      ],
    };
  }
}

试着在末尾加上 || []。

我希望这能帮到你。