Angular2 typescript jspm:没有Http的提供者(App – > Provider – > Http)

前端之家收集整理的这篇文章主要介绍了Angular2 typescript jspm:没有Http的提供者(App – > Provider – > Http)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我尝试使用system.js从Webpack迁移到JSPM.我们有简单的App组件.我正在读这篇文章 Angular 2 Starter Setup with JSPM,SystemJS and Typescript in atom (Part 1)

import {Component} from 'angular2/core';
import {Bus} from './business.service';

@Component({
  selector: 'app',template: `
  <p>Hello World</p>
  `,providers:[Bus]
})
export class App {
  constructor(private bus : Bus) { }
}

和Http的简单(商业)服务

import {Injectable} from 'angular2/core';
import {Http,Response,Headers,RequestOptions} from 'angular2/http';
import {Observable}     from 'rxjs/Observable';

@Injectable()
 export class Bus {

  constructor(private http: Http){

  }
}

在Webpack工作正常但在这里使用systemjs我收到此错误

EXCEPTION: No provider for Http! (App -> Bus -> Http)

我读了Angular2 no provider for NameService,但是他们谈论的是Angular2 alpha而且提供商中没有提供商,我们使用beta @ 7

我也玩

import {Component} from 'angular2/core';
//import {Bus} from './business.service';
import {Http,RequestOptions} from 'angular2/http';
@Component({
  selector: 'app',providers:[Http]
})
export class App {
  constructor(private bus : Http) { }
}

错误甚至更奇怪

EXCEPTION: No provider for ConnectionBackend! (App -> Http -> ConnectionBackend)

我甚至尝试过更改为angular2-beta @ 6.还有angular2-beta @ 1你知道我做错了什么吗?谢谢

使用加载程序版本:systemjs@0.19.23

解决方法

在引导应用程序时,您需要定义HTTP_PROVIDERS提供程序:

import {HTTP_PROVIDERS} from 'angular2/http';

bootstrap(AppComponent,[ HTTP_PROVIDERS ]);

或者如果要在组件级别指定它:

import {Component} from 'angular2/core';
//import {Bus} from './business.service';
import {Http,RequestOptions,HTTP_PROVIDERS} from 'angular2/http';
@Component({
  selector: 'app',template: `
    <p>Hello World</p>
  `,providers:[HTTP_PROVIDERS] // <-----------
})
export class App {
  constructor(private bus : Http) { }
}

猜你在找的Angularjs相关文章