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