我尝试使用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) { } }