angular – 在服务中注入http会给出“没有Http提供程序!”错误
Angular版本:2.0.0-beta.13
我试图将http注入服务: @Injectable() export class GithubService { ... constructor(private http: Http) { } } 我已将HTTP_PROVIDERS列为我的应用程序的根组件中的提供程序,因此该提供程序应该可用于我的应用程序中的任何组件: @Component({ providers: [HTTP_PROVIDERS],}) export class AppComponent {} 但是,当我运行此应用程序时,我收到以下错误:
我究竟做错了什么? 编辑 我将提供者更改为viewProviders,错误现在消失了! @Component({ viewProviders: [HTTP_PROVIDERS],我无法解释为什么这是有效的.任何视图都不会直接访问http.它只能在GithubService中访问.那么为什么我必须将HTTP_PROVIDERS声明为viewProvider?
如果你选择Providers:[HTTP_PROVIDERS],可以将HTTP_PROVIDERS引用到bootstrap()中.您不需要使用viewProvider,它可用于其他目的.
你必须确保包含http.dev.js(通过CDN / node_modules). <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/2.0.0-beta.13/http.dev.js"></script> 然后在rootComponent中 import {HTTP_PROVIDERS} from 'angular2/http'; import {GithubService} from './GithubService'; bootstrap(rootComponent,[HTTP_PROVIDERS,GithubService]); // if you reference HTTP_PROVIDERS here globally (in bootstrap),you don't require to use providers:[HTTP_PROVIDERS] in any component. // same way GithubService reference has been passed globally which would create single instance of GithubService (In case if you want) 然后在GithubService中 import {Http} from 'angular2/http'; @Injectable() export class GithubService { ... constructor(private http: Http) { // this will work now without any error } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |