我尝试使用服务来存储全球使用的信息。目前它应该只包含当前用户。
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');
}
}
答案 0 :(得分:2)
将 UserService 放在 AppModule 的提供程序中,并使用@Injectable
进行注释