2017-02-10 71 views
0

我创建了一个名为SecurityService的简单服务。这是代码:“我的Angular 2.0.0项目中没有提供商”

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

@Injectable() 
export class SecurityService { 
    items: any[]; 

    constructor() { 
     this.items = [ 
      { name: 'User 1' }, 
      { name: 'User 2' }, 
      { name: 'User 3' } 
     ]; 
    } 

    getItems() { 
     return this.items; 
    } 
} 

而为了利用这项服务,我创建了一个简单的页面。

import { Component } from '@angular/core'; 
import { SecurityService } from '../services/security.service' 

@Component({ 
    selector: 'test-page', 
    template: require('./test/test.page.html'), 
    providers: [SecurityService] 
}) 
export class TestPage { 
    items: any[]; 

    constructor(private securitySvc: SecurityService) { 
      this.items = securitySvc.getItems(); 
    } 
} 

当我加载此页面时,收到“没有为SecurityService提供提供程序!”的错误。经过很多搜索,我无法弄清楚这个问题的解决方案。

我应该发布任何其他内容来帮助解决此问题。

非常感谢所有帮助。

  • sroye98
+1

提供的代码是完全有效的,尝试重新申请,重新启动纳克服务。 – kemsky

+0

难道是SecurityService以某种方式在给定的'test-page'组件之前得到实例化吗? – longbow

+2

为了测试目的,尝试在AppModule中提供SecurityService而不是TestPage – mickdev

回答

0

我不知道到底发生了什么,但只要我重建的Visual Studio 2015中应用程序的应用开始工作。正如kemsky所说的那样,代码很好,可能与Visual Studio有关。

0

除此之外,您还显示什么,该服务还可以在模块级进行注册:

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

 
import { ConfigurationService } from './services/configuration.service'; 
 

 
@NgModule({ 
 
    imports: [ 
 
    BrowserModule, 
 
    HttpModule 
 
    ], 
 
    declarations: [ 
 
    //... 
 
    ], 
 
    providers: [ 
 
    ConfigurationService 
 
    ], 
 
    bootstrap: [ AppComponent ] 
 
}) 
 
export class AppModule { }