prima volta creando un progetto angular4. aggiungo network.service.ts ai provider services.module.ts, poi aggiungo services.module.ts ai provider shared.module.ts e poi aggiungo shared.module.ts ai provider app.module.ts. quando cerco di utilizzare NetworkService nella mia vista ottengo ERRORE Errore: nessun provider per NetworkService.
quando aggiungo NetworkService direttamente ai provider app.module.ts, questo errore non si verifica.
mi piacerebbe sapere se è possibile mettere in catena i provider come ho fatto io e se sì come farlo al momento.
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 { }
risposte:
0 per risposta № 1La tua definizione di ServiceModule
va bene, tuttavia, è necessario importare il modulo in altri moduli funzione invece di fornirli:
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 {
}
Lo stesso vale per il tuo AppModule. Non è necessario mettere i tuoi servizi nel exports: []
di un modulo, è inteso solo per direttive, tubi e altri moduli (con componenti che costituiscono una sotto-forma di direttive).
0 per risposta № 2
Devi aggiungere un provider nel tuo modulo app
Il provider deve essere aggiunto alla linea dei provider con SharedModule