无法注入服务angular2-rc4

时间:2016-07-14 07:47:38

标签: typescript angular angular2-services

我有一个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后我正面临这个问题。 请帮忙。

2 个答案:

答案 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();
     }
}