Angular 6.1 静态注入器错误

Angular 6.1 StaticInjectorError

当我在angular ng serve 中运行 cmd 时,应用程序停止加载并且出现以下错误。

ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[AuthService -> Http]: StaticInjectorError(Platform: core)[AuthService -> Http]: NullInjectorError: No provider for Http! Error: StaticInjectorError(AppModule)[AuthService -> Http]: StaticInjectorError(Platform: core)[AuthService -> Http]: NullInjectorError: No provider for Http! at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:979) at resolveToken (core.js:1232)

您必须在 module/component 级别注册您的 DI。否则你会看到这种类型的错误信息。

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

import { AuthService } from 'PATH';

@NgModule({
  providers: [AuthService],
})
export class YOURMODULE{
}

阅读有关提供者的更多信息:https://angular.io/guide/providers

尝试按照 Angular 更新指南中的说明将 Http 更改为 HttpClient https://update.angular.io/

静态注入器错误通常在定义 class 并且不可用于根模块执行时出现。例如,您有 Class A 是 Class B 和 Class C 的父模块。Class C 在 Class B 内部被访问,但是 Class C 未定义为父级内部的提供程序,在这种情况下会弹出此错误。

对于您的特定情况:AuthService 是子项,它没有作为提供者添加到 AuthModule 中。

import { AuthService } from './Path';

并在 providers 数组中添加 AuthService 将解决问题。