无法解析GlobalsService的所有参数:(?)

时间:2016-11-07 13:50:22

标签: node.js angular typescript npm

我尝试使用服务来存储全球使用的信息。目前它应该只包含当前用户。

import {Injectable} from '@angular/core';
import {UserService} from "../user/user.service";

import {User} from "../user/user";

@Injectable()
export class GlobalsService {
    private currentUser: User = null;      

    constructor(private userService: UserService) {
        this.userService.getCurrentUser().subscribe(user => this.currentUser = user);
    }
}

这是我的app.module.ts

import {NgModule} from "@angular/core";
import {BrowserModule} from '@angular/platform-browser';
import {HttpModule} from '@angular/http';
import {routing} from "./app.routing";

import {AppComponent} from './app.component';
import {UserModule} from "./user/user.module";

import {CanActivateViaOAuthGuard} from "./auth/oAuth.canActivateGuard";

import {GlobalsService} from './globals/globals.service';


@NgModule({
    imports: [BrowserModule, HttpModule, routing, UserModule],
    declarations: [AppComponent],
    bootstrap: [AppComponent],
    providers: [GlobalsService, CanActivateViaOAuthGuard]
})

export class AppModule {
}

现在我收到了这个错误:

Unhandled Promise rejection: (SystemJS) Can't resolve all parameters for GlobalsService: (?).
    Error: Can't resolve all parameters for GlobalsService: (?).
        at CompileMetadataResolver.getDependenciesMetadata 

修改

UserService由user.module.ts

提供
import {NgModule} from "@angular/core";
import {UserComponent} from "./user.component";
import {CommonModule} from "@angular/common";
import {UserService} from './user.service';

@NgModule({
    providers:[UserService],
    imports: [CommonModule],
    declarations: [UserComponent],
    exports: [UserComponent]
})

export class UserModule{}

如果我从UserService的构造函数中删除GlobalsService,则错误消失。

UserService:

import {Injectable} from '@angular/core';

import {AuthHttp} from "../auth/authHttp.service";
import {Observable} from "rxjs";
import {User} from "./user";
import {GlobalsService} from "../globals/globals.service";

@Injectable()
export class UserService {
    private url: string = this.globals.getServerUrl() + 'users';

    constructor(private http: AuthHttp, private globals: GlobalsService) {
    }

    getUsers(): Observable<User[]> {
        return this.http.get(this.url);
    }

    getCurrentUser(): Observable<User> {
        return this.http.get(this.url + '/me');
    }
}

1 个答案:

答案 0 :(得分:2)

UserService 放在 AppModule 的提供程序中,并使用@Injectable

进行注释