Angular 2 : No provider for ConnectionBackend
angular, angular-http
Solution
Import the HttpModule in your module instead of registering `Http` as a provider.
import {HttpModule} from '@angular/http';
@NgModule({
imports: [HttpModule],
declarations: [
PostComponent
],
providers: [
Actions,
MyService
],
bootstrap: [MyComponent]
})
The HttpModule registers providers for all its services.
Problem
Get this "No provider for ConnectionBackend!" error when trying to use `http` with a promise. main.ts ``` // ... tl;dr import a bunch of stuff platformBrowserDynamic().bootstrapModule(MyModule); ``` myModule.ts ``` // ... tl;dr import a bunch of stuff @NgModule({ declarations: [ PostComponent ], providers: [ Actions, MyService, Http ], imports: [ ... ], bootstrap: [MyComponent] }) ``` myComponent.ts ``` 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: Observable<Post>; postId : Number; constructor(private route: ActivatedRoute, private router: Router, private service:MyService) { } ngOnInit() { this.route.params.subscribe(params => { this.postId = +params['id']; this.post = this.service.getPostById(this.postId); }); } } ``` myService.ts ``` import {Injectable} from "@angular/core" import {Http} from '@angular/http'; import {Observable} from 'rxjs/Observable'; import {Post} from './../post/post'; import 'rxjs/Rx' @Injectable() export class MyService { endpoint_url:String = "http://someurl.com/"; constructor(private http: Http){ } getPostById (id:Number) : Observable<Post> { return this.http.get(this.endpoint_url + id.toString()).map(res => res.json()); } } ``` All looks good but then I get this error: ``` error_handler.js:51Error: Uncaught (in promise): Error: Error in ./MyComponent class MyComponent_Host - inline template:0:0 caused by: No provider for ConnectionBackend! at resolvePromise (zone.js:429) at zone.js:406 ... ``` And here is the docs for ConnectionBackend. I think I just need to add something to `providers` in `myModule`?