2017-08-13 17 views
0

初めてangular4プロジェクトを作成しています。私はservices.module.tsプロバイダにnetwork.service.tsを追加し、次にservices.module.tsをshared.module.tsプロバイダに追加してから、shared.module.tsをapp.module.tsプロバイダに追加します。 私のビューでNetworkServiceを使用しようとするとエラーが表示されます。エラー:NetworkServiceのプロバイダがありません。angular4エラー:NetworkServiceのプロバイダがありません

私がapp.module.tsプロバイダに直接NetworkServiceを追加すると、このエラーは発生しません。

私はそうしたようにプロバイダを連鎖させることができるかどうか、もしそうなら現行の方法を知りたいと思います。

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

私はあなたのための例を見つけようとしています –

関連する問題