【问题标题】:No provider for ConnectionBackendConnectionBackend 没有提供程序
【发布时间】:2016-09-08 14:05:33
【问题描述】:

所以最近我不得不更新到最新版本的 Angular2,RC.6。最大的突破性变化似乎是整个引导(通过“引入”ngModule)。

@NgModule({
    imports: [HttpModule, BrowserModule, FormsModule],
    schemas: [CUSTOM_ELEMENTS_SCHEMA],
    declarations: [AppComponent, ...],
    providers: [FrameService, Http, { provide: $WINDOW,  useValue: window }],
    bootstrap: [AppComponent]
})
class AppModule {

}

platformBrowserDynamic().bootstrapModule(AppModule);

然而,经过大量的泪水、汗水和向我能想到的所有神灵的恳求......我仍然坚持希望这是一系列错误中的最后一个错误:

没有 ConnectionBackend 的提供者!

此时我正在撕掉我剩下的最后几根头发,因为此时我对“我错过了什么”一无所知。

亲切的问候!

【问题讨论】:

  • 看起来不错。你不应该在providers 中需要Http,因为它已经由imports. [HttpModule] 提供。

标签: angular


【解决方案1】:

Http

中是多余的
providers: [FrameService, Http, { provide: $WINDOW,  useValue: window }],

因为HttpModule

imports: [HttpModule, BrowserModule, FormsModule],

已经提供了。

【讨论】:

  • 他们意识到了这个问题并不断改进。我认为在 Angular2 本身稳定之后,他们将更加努力地改善开发人员体验,提供更好的错误和适当的工具支持,例如检查模板中的语法错误和其他问题、设计人员和其他使开发人员生活更轻松的工具。跨度>
【解决方案2】:

在 app.module.ts 中添加:

import { HttpModule } from '@angular/http';

并导入模块:

imports: [
    ...
    HttpModule
    ...
  ],

【讨论】:

    【解决方案3】:

    我像这样从这个导入中删除了“Http”,它对我有用。 此外,在 modume 导入中,BrowserModule 必须位于 HttpModule 之前。

    之前:

    import { HttpModule, Http } from '@angular/http';
    

    之后:

    import { HttpModule } from '@angular/http';
    

    【讨论】:

    • 从您建议的“某些场景”中定义一个示例场景...如果不是,您的答案已经由 Günter Zöchbauer 提供,并且可能会在不久的将来被删除。我们是来学习的,而不是重复阅读相同的信息(阅读:rep hunt)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2017-02-03
    • 2018-08-14
    • 2018-03-05
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多