2017-08-13 75 views
0

第一次创建angular4项目。我将network.service.ts添加到services.module.ts提供程序,然后将services.module.ts添加到shared.module.ts提供程序,然后将shared.module.ts添加到app.module.ts提供程序。 当我尝试在我的视图中使用NetworkService我得到错误错误:没有NetworkService的提供者。angular4错误错误:没有NetworkService的提供商

当我将NetworkService直接添加到app.module.ts提供程序中时,不会出现此错误。

我想知道是否有可能连锁供应商像我一样,如果是的话,目前如何做到这一点。

network.service.ts

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

@Injectable() 

export class NetworkService { 

    constructor() { } 

    test = "testing"; 

    myTest(){ 
    return 'method testing'; 
    } 

} 

service.module.ts

import { NgModule } from '@angular/core'; 
import { NetworkService } from './network.service'; 


@NgModule({ 
    imports: [], 
    exports:[], 
    declarations: [], 
    entryComponents: [], 
    providers: [NetworkService] 
}) 

export class ServicesModule { 
} 

shared.module.ts

import { NgModule } from '@angular/core'; 
import { ServicesModule } from './services/services.module'; 


@NgModule({ 
    imports: [], 
    exports:[], 
    declarations: [], 
    entryComponents: [], 
    providers: [ 
    ServicesModule, 
    ] 
}) 

export class SharedModule { 
} 

app.module.ts

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule }   from '@angular/core'; 
import { RouterModule }  from '@angular/router'; 

import { SharedModule }  from './shared/shared.module'; 

import { AppComponent }  from './app.component'; 

import { ROUTES } from './app.route'; 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    ], 
    imports: [ 
    BrowserModule, 
    RouterModule.forRoot(ROUTES) 
    ], 
    providers: [ 
    SharedModule, 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

enter image description here

回答

0

你的ServiceModule定义是好的,但是,你需要导入模块而不是提供它们:

import { NgModule } from '@angular/core'; 
import { ServicesModule } from './services/services.module'; 


@NgModule({ 
    imports: [ServicesModule], // import modules 
    exports:[], 
    declarations: [], 
    entryComponents: [], 
    providers: [] // do not provide modules 
}) 

export class SharedModule { 
} 

同样适用于您的AppModule。没有必要将您的服务放入模块的exports: [],它仅用于指令,管道和其他模块(组件是指令的子表单)。

0

你必须在你的AppModule

提供商添加提供程序必须在提供符合SharedModule添加

+0

app.module.ts中提供者内部的SharedModule怎么样? – omer

+0

提供商=== NetworkService? – omer

+0

我正在尝试为您找到一个示例 –

相关问题