【问题标题】:Angular 8: No provider for MultilevelMenuServiceAngular 8:没有 MultilevelMenuService 的提供者
【发布时间】:2020-10-10 22:26:28
【问题描述】:

我有一个 angular8 项目,我最近从节点上的 angular7 升级:"10.15.2","npm":"6.14.5"

我正在使用以下插件

https://www.npmjs.com/package/ng-material-multilevel-menu

@4.12.2

使用ng serve,应用程序可以正常工作,并且多层次符合预期。

但是我已经按照universal 中的描述安装了 angular ssr,并且当我使用命令运行时:

ng serve --prod --optimization=false

npm run build:ssr && npm run serve:ssr

我收到以下错误:

main.96f1c69496e6c439b888.js:29505 错误 NullInjectorError: StaticInjectorError(AppModule)[ListItemComponent -> MultilevelMenuService]: StaticInjectorError(平台:核心)[ListItemComponent -> MultilevelMenuService]: NullInjectorError: 没有 MultilevelMenuService 的提供者!

我制作了以下项目以显示我得到的错误,您可以在链接angular8-ng-multilevel中找到该错误

关于如何解决它的任何想法?

谢谢

【问题讨论】:

  • 你的 Angular 项目有超过 1 个模块吗?如果是,那么您是否在使用它的模块中注册了MultilevelMenuService / 是在根级别可供所有其他模块访问它的服务,那么 ListItemComponent 应该可以正常工作

标签: angular npm


【解决方案1】:

这是你的解决方案

import { NgModule } from "@angular/core";

import { AppComponent } from "./app.component";
import {
  NgMaterialMultilevelMenuModule,
  ɵb,
} from "ng-material-multilevel-menu"; // <------- added from the module
import { RouterModule, Routes } from "@angular/router";
// import { MultilevelMenuService } from "ng-material-multilevel-menu/lib/multilevel-menu.service";

const appRoutes: Routes = [];

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserModule.withServerTransition({ appId: "serverApp" }),
    NgMaterialMultilevelMenuModule,
    RouterModule.forRoot(appRoutes, {
      enableTracing: false,
      onSameUrlNavigation: "reload",
    }), // <-- debugging purposes only
  ],
  providers: [ɵb], <----- import for service provider
  bootstrap: [AppComponent],
})
export class AppModule {}

问题是您的应用程序正在尝试获取一个应该已经初始化的服务实例,但不是。因此我添加了一个提供程序来查看模块中的导出。 ɵb

【讨论】:

  • 我还看到缺少材料库所需的浏览器动画模块,它只是一个错误应用程序仍在加载...
猜你喜欢
  • 1970-01-01
  • 2019-11-23
  • 2020-05-16
  • 2015-08-15
  • 1970-01-01
  • 2019-05-15
  • 2018-11-17
  • 2018-08-04
  • 2018-06-21
相关资源
最近更新 更多