得到这个"ConnectionBackend没有提供者!" 尝试使用httppromise 时出错.
// ... tl;dr import a bunch of stuff
platformBrowserDynamic().bootstrapModule(MyModule);
Run Code Online (Sandbox Code Playgroud)
// ... tl;dr import a bunch of stuff
@NgModule({
declarations: [
PostComponent
],
providers: [
Actions,
MyService,
Http
],
imports: [
...
],
bootstrap: [MyComponent]
})
Run Code Online (Sandbox Code Playgroud)
import { Component, OnInit } from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Observable} from 'rxjs/Observable';
import {MyService} from './../services/myService'
import {Post} from './post';
@Component({
templateUrl: 'post.component.html',
styleUrls: ['post.component.css']
})
export class MyComponent implements OnInit {
post: …Run Code Online (Sandbox Code Playgroud) Angular版本:2.0.0-beta.13
我想注入http一项服务:
@Injectable()
export class GithubService {
...
constructor(private http: Http) {
}
}
Run Code Online (Sandbox Code Playgroud)
我已HTTP_PROVIDERS在应用程序的根组件中列为提供程序,因此该提供程序应该可用于我的应用程序中的任何组件:
@Component({
providers: [HTTP_PROVIDERS],
})
export class AppComponent {}
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此应用程序时,我收到以下错误:
例外:错误:未捕获(承诺):没有Http的提供者!(HttpReqComponent - > GithubService - > Http)
我究竟做错了什么?
编辑
我改变providers了viewProviders,错误现在消失了!
@Component({
viewProviders: [HTTP_PROVIDERS],
})
export class AppComponent {}
Run Code Online (Sandbox Code Playgroud)
但是,我无法解释为什么这是有效的.http任何视图都不会直接访问.它只能在里面进入GithubService.那我为什么要宣布HTTP_PROVIDERS为viewProvider?
编辑2
好吧,我将providersAppComponent 的声明向下移动到我需要它的组件,现在它可以工作了!因此,在根级别声明它必定有一些怪癖.
@Component({
providers: [HTTP_PROVIDERS, GithubService],
})
export class HttpReqComponent { }
Run Code Online (Sandbox Code Playgroud)
其实,无论是providers和viewProviders作品.事实证明,这viewProviders …