2017-08-13 63 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

我正在嘗試爲您找到一個示例 –

相關問題