无法解析UserService的所有参数:(Http,?) [英] Can't resolve all parameters for UserService:(Http, ?)

查看:137
本文介绍了无法解析UserService的所有参数:(Http,?)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我升级到最新的Angular2版本2.0.0-beta.17之前,我的项目运行良好

My project was working fine until i upgraded to recent Angular2 version 2.0.0-beta.17

我的UserService就是这样

My UserService is like this

import { Injectable} from '@angular/core';
import { Http } from '@angular/http';
import { BaseService } from './base.service';
import { SubDomain } from './../interfaces/subdomain.interface';
import { SubDomainService} from './index';

@Injectable()
export class UserService extends BaseService {
  subDomain: SubDomain;
  constructor(
    private _http: Http,
    private subDomainService: SubDomainService
  ) {
     super();
     this.subDomain = subDomainService.subDomain;
  } 
}

和SubDomainService就是这样

and SubDomainService is like this

import { Injectable } from '@angular/core';
import { SubDomain } from './../interfaces/subdomain.interface';
import { CompanyService } from './company.service';

@Injectable()
export class SubDomainService {
  subDomain: SubDomain = {
    exists: false,
    is_sub_domain_url: false,
    sub_domain: '',
    company_id: '',
    user_id: '',
    name:''
  };

  constructor(
    private _companyService: CompanyService
  ) {
  }
}

我在寻找解决方案,但大多数解决方案都是关于使服务可注入的,但在这里我遵循相同的约定,但是仍然会给出错误信息

I looked up for solutions but most of them were about making a service injectable but here i followed the same convention but stilll it's giving the error

未捕获的错误:无法解析UserService的所有参数:(Http,?).

Uncaught Error: Can't resolve all parameters for UserService: (Http, ?).

我的AppModule就是这样

My AppModule is like this

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CoreModule } from './core.module';
import { AppComponent } from './app.component';
import { routes } from './config/routes/index';

@NgModule({
 declarations: [
   AppComponent
 ],
 imports: [
   routes,
   BrowserModule,
   CoreModule.forRoot()
 ],
 bootstrap: [AppComponent]
})
export class AppModule { }

CoreModule就是这样

CoreModule is like this

import {ModuleWithProviders, NgModule, Optional, SkipSelf } from '@angular/core';
import { 
  SubDomainService, 
  CompanyService, 
  UserService
} from './shared/services/index';
import {SharedModule} from './shared/modules/shared.module';

@NgModule({
   exports: [SharedModule]
})

export class CoreModule {
   static forRoot(): ModuleWithProviders {
    return {
        ngModule: CoreModule,
        providers: [SubDomainService,UserService,CompanyService]
    };
   }

   constructor( @Optional() @SkipSelf() parentModule: CoreModule) {
       if (parentModule) {
           throw new Error('CoreModule is already loaded. Import it in the AppModule only');
       }
   }
}

推荐答案

这可能是由于该import语句

This might be due to this import statement

import { SubDomainService} from './index';

您可能正在从其他文件(例如本例中的index.ts)导出SubDomainService,考虑直接从其自己的文件中导入服务.

you might be exporting SubDomainService from a different file i.e. index.ts in your case, consider importing service directly from it's own file.

这篇关于无法解析UserService的所有参数:(Http,?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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