Angular 角形2罐';t解析服务的所有参数

Angular 角形2罐';t解析服务的所有参数,angular,service,inject,Angular,Service,Inject,我有两个服务:LoginService和UserService。我正在尝试将UserService注入LoginService,但应用程序无法运行 在控制台中,我有一个错误: 错误:无法解析UserService:([对象])的所有参数, ?). 在SyntaxError.ZoneAwareError ()在 SyntaxError.BaseError[作为构造函数] 这是我的登录服务: import {UserService} from '../services/user.service';

我有两个服务:LoginService和UserService。我正在尝试将UserService注入LoginService,但应用程序无法运行

在控制台中,我有一个错误:

错误:无法解析UserService:([对象])的所有参数, ?). 在SyntaxError.ZoneAwareError ()在 SyntaxError.BaseError[作为构造函数]

这是我的登录服务:

import {UserService} from '../services/user.service';
@Injectable()
export class LoginService {

  constructor(public _http: Http,public us:UserService) {
  }
 @Injectable()
    export class UserService {
    constructor(private _http: Http , public _ls: LoginService) {

    }
import {LoginService} from './services/login.service';
import {UserService} from './services/user.service';

@NgModule({
  declarations: [
    AppComponent,


  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,

  ],
  exports: [BrowserModule, SlimLoadingBarModule],
  providers: [UserService, LoginService, appRoutingProviders],
  bootstrap: [AppComponent]
})
export class AppModule { }
和用户服务:

import {UserService} from '../services/user.service';
@Injectable()
export class LoginService {

  constructor(public _http: Http,public us:UserService) {
  }
 @Injectable()
    export class UserService {
    constructor(private _http: Http , public _ls: LoginService) {

    }
import {LoginService} from './services/login.service';
import {UserService} from './services/user.service';

@NgModule({
  declarations: [
    AppComponent,


  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,

  ],
  exports: [BrowserModule, SlimLoadingBarModule],
  providers: [UserService, LoginService, appRoutingProviders],
  bootstrap: [AppComponent]
})
export class AppModule { }
角度模块:

import {UserService} from '../services/user.service';
@Injectable()
export class LoginService {

  constructor(public _http: Http,public us:UserService) {
  }
 @Injectable()
    export class UserService {
    constructor(private _http: Http , public _ls: LoginService) {

    }
import {LoginService} from './services/login.service';
import {UserService} from './services/user.service';

@NgModule({
  declarations: [
    AppComponent,


  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,

  ],
  exports: [BrowserModule, SlimLoadingBarModule],
  providers: [UserService, LoginService, appRoutingProviders],
  bootstrap: [AppComponent]
})
export class AppModule { }

你有一个循环引用

您的
UserService
需要
LoginService
,而
LoginService
需要
UserService


删除其中一个依赖项。例如,重构您的用户服务,使其不需要引用LoginService,因为另一个帖子提到了循环依赖性。。。您可以考虑使用<代码>转发文件()/<代码>来解决这个问题。

简而言之,我们可以注入前向引用,而不是真正的服务。因此,服务注入将被推迟。从而解决了循环依赖问题

下面是一个代码示例:

import {Component, Inject, forwardRef} from '@angular/core';

@Component({
  selector: 'my-app',
  template: '<h1>Favourite framework: {{ name }}</h1>'
})
class AppComponent {
  name: string;

  constructor(@Inject(forwardRef(() => NameService)) nameService) {
    this.name = nameService.getName();
  }
}

class NameService {
  getName () {
    return "Angular";
  }
}
从'@angular/core'导入{Component,Inject,forwardRef};
@组成部分({
选择器:“我的应用程序”,
模板:“收藏夹框架:{{name}}”
})
类AppComponent{
名称:字符串;
构造函数(@Inject(forwardRef(()=>NameService))NameService){
this.name=nameService.getName();
}
}
类名称服务{
getName(){
返回“角度”;
}
}

您可以查看更多详细信息。

请添加角度模块和您的
UserService
代码。您刚刚创建了一个循环依赖项确切地说,解决方案是什么?删除其中一个依赖项。例如,重构你的用户服务,使其不需要引用LoginService这是一个可能的解决方案?是的,这是唯一的解决方案。你能在问题中包括论坛帖子的必要部分吗?总是建议包含实际答案,而不是用链接引用。我认为应该是这样的:
构造函数(@Inject(forwardRef(()=>NameService))NameService:NameService){this.name=NameService.getName();}