我有一个UserService,其中包含一些静态方法,如下所示:
import {Injectable} from '@angular/core';
@Injectable()
export class UserInfoService {
private static _userInfo: any;
static put(userInfo:any) {
this._userInfo = userInfo;
}
static getRole() : string {
if (this._userInfo) {
return this._userInfo.role;
}
return '';
}
static getUserInfo() : string {
return this._userInfo;
}
}
我正在boot.ts中注入它,如下所示:
bootstrap(AppComponent, [ UserInfoService])
我在另一个组件中使用此服务如下:
import {Component} from '@angular/core';
import {UserInfoService} from "../service/user.info";
@Component({
selector: 'nav-bar',
templateUrl: 'template/navbar.html'
});
export class NavigationComponent {
constructor() {
this.userInfo = UserInfoService.getUserInfo();
}
}
此NavigationComponent调用无法访问UserInfoService。 注意:这与angular2-rc1一起使用。升级到rc4后我正面临这个问题。 请帮忙。
答案 0 :(得分:2)
如果您想在任何组件中使用它,只需创建一个服务实例....
在构造函数中,将userinfoservice实例设为:
constructor(private userInfoService:UserInfoService) {
//......now you can use your functions by
userInfoService.getUserInfo()
}
它,它可以正常使用它:)
答案 1 :(得分:1)
通过注入只有静态方法和变量的服务,我无法看到你想要完成的任务。
我建议使用像单身人士这样的服务,所以注入它实际上是有道理的:
import {Injectable} from '@angular/core';
@Injectable()
export class UserInfoService {
private _userInfo: any;
put(userInfo:any) {
this._userInfo = userInfo;
}
getRole() : string {
if (this._userInfo) {
return this._userInfo.role;
}
return '';
}
getUserInfo() : string {
return this._userInfo;
}
}
在你的组件中:
import {Component} from '@angular/core';
import {UserInfoService} from "../service/user.info";
@Component({
selector: 'nav-bar',
templateUrl: 'template/navbar.html'
});
export class NavigationComponent {
userInfo: string;
constructor(private _userInfoService: UserInfoService) {
this.userInfo = _userInfoService.getUserInfo();
}
}