Angular 6+提供了In:'root'引发StaticInjectorError

时间:2018-11-14 15:18:51

标签: dependency-injection angular6

我已经在Google上进行了广泛的搜索,但似乎找不到与此问题相关的其他人,因此我必须缺少一些东西。我将所有AppModule服务都转换为使用ProvideIn:'root'方法,但似乎无法正常工作。

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

Injectable({
    providedIn: 'root'
})
export class CommonService{
    UserName : string = 'Guest';
    Roles : Array<any> = [];
    Theme: string = 'standard';

    constructor(){}
}

以下是使用该服务的组件之一:

import { CommonService } from './Services/common.service';

@Component({
    selector: 'navBar',
  templateUrl: './navbar.html'
})

export class NavBar {

    constructor(private session: CommonService) {}

在运行时,这是控制台中的错误:

StaticInjectorError(AppModule)[NavBar-> CommonService]:   StaticInjectorError(平台:核心)[导航栏-> CommonService]:     NullInjectorError:没有CommonService提供程序!

我已经检查了文档,但看不到哪里出了问题。我想念什么?

忘记了,NavBar是在SharedModule中声明的组件,SharedModule是在AppModule中导入的。

1 个答案:

答案 0 :(得分:0)

您可能会错过Injectable开头的“ @”:

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

@Injectable({
    providedIn: 'root'
})
export class CommonService{
    UserName : string = 'Guest';
    Roles : Array<any> = [];
    Theme: string = 'standard';

    constructor(){}
}

IDE中可能没有错误,但看起来可能是问题所在