Angular2 +打字稿+ jspm:没有Http的提供者(App-> Provider-> Http) [英] Angular2 + typescript + jspm : No provider for Http ( App -> Provider -> Http )

查看:74
本文介绍了Angular2 +打字稿+ jspm:没有Http的提供者(App-> Provider-> Http)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用system.js从Webpack迁移到JSPM.我们有简单的App组件.我不喜欢这篇文章使用JSPM和SystemJS进行Angular 2入门安装程序和原子中的打字稿(第1部分)

I trying migrate from Webpack to JSPM with system.js. We have simple App component. I was fallowing this article 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时出现此错误

In Webpack works fine but here with systemjs I getting this error

例外:没有Http的提供者!(应用->总线-> Http)

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

我阅读了 Angular2没有NameService提供程序,但是他们谈论的是Angular2 alpha,而没有提供程序中的提供程序,我们使用beta @ 7

I read Angular2 no provider for NameService but they talking about Angular2 alpha and no provider in provider and we use beta@7

我也玩

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

但错误甚至更奇怪

例外:没有ConnectionBackend的提供者!(应用-> Http-> ConnectionBackend)

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

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

I even tryed change to angular2-beta@6. and also angular2-beta@1 Do you know what I do wrong? thank you

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

推荐答案

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

You need to define the HTTP_PROVIDERS providers when bootstrapping your application:

import {HTTP_PROVIDERS} from 'angular2/http';

bootstrap(AppComponent, [ HTTP_PROVIDERS ]);

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

or if you want to specify it at your component level:

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

这篇关于Angular2 +打字稿+ jspm:没有Http的提供者(App-> Provider-> Http)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆