Nessun provider per HttpClient


364

Dopo l'aggiornamento dalla versione 4.4 alla 5.0 e dopo aver aggiornato tutto HttpModule e Http a HttpClientModule ho iniziato a ricevere questo errore.

Ho anche aggiunto di nuovo HttpModule per essere sicuro che non sia dovuto a qualche dipendenza ma non risolve il problema

In app.module, ho impostato tutto correttamente

import { HttpModule } from '@angular/http';
import { HttpClientModule, HttpClient } from '@angular/common/http';
.
.
.
@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        HttpModule,
        BrowserAnimationsModule,
        FormsModule,
        AppRoutingModule,
.
.
.

Non so da dove provenga questo errore, o non ho idea di come farsene interno. Ho anche un avvertimento (mettilo anche sotto) forse è correlato.

Error: StaticInjectorError[HttpClient]: 
  StaticInjectorError[HttpClient]: 
    NullInjectorError: No provider for HttpClient!
    at _NullInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5665)
    at resolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5953)
    at tryResolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5895)
    at StaticInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5766)
    at resolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5953)
    at tryResolveToken (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5895)
    at StaticInjector.get (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:5766)
    at resolveNgModuleDep (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15328)
    at _createClass (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15373)
    at _createProviderInstance$1 (vendor.js?v=mekBM8IVBK72-MIZOVSTJizGi_TD_xK3uhPOCRlEHwg:15339)

Messaggio di avviso:

./node_modules/@angular/Common/esm5/http.js
There are multiple modules with names that only differ in casing.
This can lead to unexpected behavior when compiling on a filesystem with other case-semantic.
Use equal casing. Compare these module identifiers:
* D:\XXX\node_modules\@angular\Common\esm5\http.js
    Used by 21 module(s), i. e.
    D:\XXX\node_modules\awesome-typescript-loader\dist\entry.js?silent=true!D:\XXX\node_modules\angular2-template-loader\index.js!D:\XXX\ClientApp\app\services\notification-endpoint.service.ts
* D:\XXX\node_modules\@angular\common\esm5\http.js
    Used by 1 module(s), i. e.
    D:\XXX\node_modules\awesome-typescript-loader\dist\entry.js?silent=true!D:\XXX\node_modules\angular2-template-loader\index.js!D:\XXX\ClientApp\app\app.module.ts
 @ ./node_modules/@angular/Common/esm5/http.js
 @ ./ClientApp/app/services/notification-endpoint.service.ts
 @ ./ClientApp/app/app.module.ts
 @ ./ClientApp/boot.browser.ts
 @ multi event-source-polyfill webpack-hot-middleware/client?path=__webpack_hmr&dynamicPublicPath=true ./ClientApp/boot.browser.ts

Comportamento attuale

StaticInjectorError[HttpClient]: StaticInjectorError[HttpClient]: NullInjectorError: No provider for HttpClient!

Ambiente

Angular version: 5.0.0 and 5.0.1 (also 5.1 beta)

Browser:
- all

For Tooling issues:
- Node version: 8.5.0
- Platform:  windows
{
  "name": "X",
  "version": "1.0.0",
  "description": "X",
  "author": {
    "name": "X X",
    "email": "XX",
    "url": "X"
  },
  "homepage": "X",
  "dependencies": {
    "@angular/animations": "^5.1.0-beta.0",
    "@angular/common": "^5.1.0-beta.0",
    "@angular/compiler": "^5.1.0-beta.0",
    "@angular/compiler-cli": "^5.1.0-beta.0",
    "@angular/core": "^5.1.0-beta.0",
    "@angular/forms": "^5.1.0-beta.0",
    "@angular/http": "^5.1.0-beta.0",
    "@angular/platform-browser": "^5.1.0-beta.0",
    "@angular/platform-browser-dynamic": "^5.1.0-beta.0",
    "@angular/platform-server": "^5.1.0-beta.0",
    "@angular/router": "^5.1.0-beta.0",
    "@ngtools/webpack": "^1.8.0",
    "@ngx-translate/core": "^8.0.0",
    "@ngx-translate/http-loader": "^2.0.0",
    "@swimlane/ngx-datatable": "^11.0.3",
    "@types/jquery": "^3.2.16",
    "@types/webpack-env": "^1.13.2",
    "angular2-template-loader": "^0.6.2",
    "aspnet-webpack": "^2.0.1",
    "awesome-typescript-loader": "^3.3.0",
    "bootstrap": "^3.3.7",
    "bootstrap-datepicker": "^1.7.1",
    "bootstrap-select": "^1.12.4",
    "bootstrap-toggle": "^2.2.2",
    "bootstrap-vertical-tabs": "^1.2.2",
    "chart.js": "^2.7.1",
    "core-js": "^2.5.1",
    "css": "^2.2.1",
    "css-loader": "^0.28.7",
    "event-source-polyfill": "^0.0.11",
    "expose-loader": "^0.7.3",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.5",
    "font-awesome": "^4.7.0",
    "html-loader": "^0.5.1",
    "jquery": "^3.2.1",
    "json-loader": "^0.5.7",
    "ng2-charts": "^1.6.0",
    "ng2-toasty": "^4.0.3",
    "ngx-bootstrap": "^2.0.0-beta.8",
    "node-sass": "^4.6.0",
    "popper.js": "^1.12.6",
    "raw-loader": "^0.5.1",
    "rxjs": "^5.5.2",
    "sass-loader": "^6.0.6",
    "style-loader": "^0.19.0",
    "to-string-loader": "^1.1.5",
    "typescript": "^2.6.1",
    "url-loader": "^0.6.2",
    "web-animations-js": "^2.3.1",
    "webpack": "^3.8.1",
    "webpack-hot-middleware": "^2.20.0",
    "webpack-merge": "^4.1.1",
    "zone.js": "^0.8.18"
  },
  "devDependencies": {
    "@types/chai": "^4.0.4",
    "@types/jasmine": "^2.6.3",
    "chai": "^4.1.2",
    "jasmine-core": "^2.8.0",
    "karma": "^1.7.1",
    "karma-chai": "^0.1.0",
    "karma-chrome-launcher": "^2.2.0",
    "karma-cli": "^1.0.1",
    "karma-jasmine": "^1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "karma-webpack": "^2.0.5"
  },
  "scripts": {
    "dev-build": "node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js",
    "test": "karma start ClientApp/test/karma.conf.js"
  }
}

webpack.config.js

const path = require('path');
const webpack = require('webpack');
const merge = require('webpack-merge');
const AotPlugin = require('@ngtools/webpack').AotPlugin;
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;

module.exports = (env) => {
    // Configuration in common to both client-side and server-side bundles
    const isDevBuild = !(env && env.prod);
    const sharedConfig = {
        stats: { modules: false },
        context: __dirname,
        resolve: { extensions: ['.js', '.ts'] },
        output: {
            filename: '[name].js',
            publicPath: 'dist/' // Webpack dev middleware, if enabled, handles requests for this URL prefix
        },
        module: {
            rules: [
                { test: /\.ts$/, use: isDevBuild ? ['awesome-typescript-loader?silent=true', 'angular2-template-loader'] : '@ngtools/webpack' },
                { test: /\.html$/, use: 'html-loader?minimize=false' },
                { test: /\.css$/, use: ['to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize'] },
                { test: /\.scss$/, use: ['to-string-loader', isDevBuild ? 'css-loader' : 'css-loader?minimize', 'sass-loader'] },
                { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' }
            ]
        },
        plugins: [new CheckerPlugin()]
    };

    // Configuration for client-side bundle suitable for running in browsers
    const clientBundleOutputDir = './wwwroot/dist';
    const clientBundleConfig = merge(sharedConfig, {
        entry: { 'main-client': './ClientApp/boot.browser.ts' },
        output: { path: path.join(__dirname, clientBundleOutputDir) },
        plugins: [
            new webpack.DllReferencePlugin({
                context: __dirname,
                manifest: require('./wwwroot/dist/vendor-manifest.json')
            })
        ].concat(isDevBuild ? [
            // Plugins that apply in development builds only
            new webpack.SourceMapDevToolPlugin({
                filename: '[file].map', // Remove this line if you prefer inline source maps
                moduleFilenameTemplate: path.relative(clientBundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk
            })
        ] : [
                // Plugins that apply in production builds only
                new webpack.optimize.UglifyJsPlugin(),
                new AotPlugin({
                    tsConfigPath: './tsconfig.json',
                    entryModule: path.join(__dirname, 'ClientApp/app/app.module#AppModule')
                })
            ])
    });

    return [clientBundleConfig];
};

webpack.config.vendor.js

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const merge = require('webpack-merge');
const treeShakableModules = [
    '@angular/animations',
    '@angular/common',
    '@angular/compiler',
    '@angular/core',
    '@angular/forms',
    '@angular/http',
    '@angular/platform-browser',
    '@angular/platform-browser-dynamic',
    '@angular/router',
    'zone.js',
];
const nonTreeShakableModules = [
    'bootstrap',
    'core-js/client/shim',
    'web-animations-js',
    'event-source-polyfill',
    'jquery',
    '@swimlane/ngx-datatable/release/assets/icons.css',
    'ng2-toasty',
    'ng2-toasty/bundles/style-bootstrap.css',
    'ng2-charts',
    'ngx-bootstrap/modal',
    'ngx-bootstrap/tooltip',
    'ngx-bootstrap/popover',
    'ngx-bootstrap/dropdown',
    'ngx-bootstrap/carousel',
    'bootstrap-vertical-tabs/bootstrap.vertical-tabs.css',
    'bootstrap-toggle/css/bootstrap-toggle.css',
    'bootstrap-toggle/js/bootstrap-toggle.js',
    'bootstrap-select/dist/css/bootstrap-select.css',
    'bootstrap-select/dist/js/bootstrap-select.js',
    'bootstrap-datepicker/dist/css/bootstrap-datepicker3.css',
    'font-awesome/css/font-awesome.css'
];
const allModules = treeShakableModules.concat(nonTreeShakableModules);

module.exports = (env) => {
    const extractCSS = new ExtractTextPlugin('vendor.css');
    const isDevBuild = !(env && env.prod);
    const sharedConfig = {
        stats: { modules: false },
        resolve: { extensions: ['.js'] },
        module: {
            rules: [
                { test: /\.(gif|png|woff|woff2|eot|ttf|svg)(\?|$)/, use: 'url-loader?limit=100000' }
            ]
        },
        output: {
            publicPath: 'dist/',
            filename: '[name].js',
            library: '[name]_[hash]'
        },
        plugins: [
            new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery' }), // Maps these identifiers to the jQuery package (because Bootstrap expects it to be a global variable)
            new webpack.ContextReplacementPlugin(/\@angular\b.*\b(bundles|linker)/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/11580
            new webpack.ContextReplacementPlugin(/angular(\\|\/)core(\\|\/)@angular/, path.join(__dirname, './ClientApp')), // Workaround for https://github.com/angular/angular/issues/14898
            new webpack.IgnorePlugin(/^vertx$/) // Workaround for https://github.com/stefanpenner/es6-promise/issues/100
        ]
    };

    const clientBundleConfig = merge(sharedConfig, {
        entry: {
            // To keep development builds fast, include all vendor dependencies in the vendor bundle.
            // But for production builds, leave the tree-shakable ones out so the AOT compiler can produce a smaller bundle.
            vendor: isDevBuild ? allModules : nonTreeShakableModules
        },
        output: { path: path.join(__dirname, 'wwwroot', 'dist') },
        module: {
            rules: [
                { test: /\.css(\?|$)/, use: extractCSS.extract({ use: isDevBuild ? 'css-loader' : 'css-loader?minimize' }) }
            ]
        },
        plugins: [
            extractCSS,
            new webpack.DllPlugin({
                path: path.join(__dirname, 'wwwroot', 'dist', '[name]-manifest.json'),
                name: '[name]_[hash]'
            })
        ].concat(isDevBuild ? [] : [
            new webpack.optimize.UglifyJsPlugin()
        ])
    });

    return [clientBundleConfig];
}

stai usando angular2-jwt?
Sajeetharan,


è un progetto angular-cli? potresti per favore aggiungere il tuo package.json
Jota.Toledo l'

1
No, è un progetto .core 2.0 e funzionava fino all'aggiornamento angolare 5 e httpclientmodule. E il link sotto è lo stesso con la risposta sopra ma non aiuta perché httpclient è già nei costruttori dove viene utilizzato.
Himmet Yelekin,

1
No, non è un duplicato, sono diversi e la sua risposta è già corretta al mio fianco e lo stesso problema si verifica anche se ho un file di prova e senza un file di prova
Himmet Yelekin

Risposte:


661

Per risolvere questo problema HttpClientè il meccanismo di Angular per la comunicazione con un server remoto su HTTP.

Per rendere HttpClientdisponibile ovunque nell'app,

  1. apri la radice AppModule,

  2. importare HttpClientModuleda @angular/common/http,

    import { HttpClientModule } from '@angular/common/http';

  3. aggiungilo @NgModule.importsall'array.

    imports:[HttpClientModule, ]


1
Grazie! Mi hai risparmiato di dedicare più tempo a questo problema. Pollice su!
Sassofonista,

Questo mi ha risolto. Avevo inserito il mio nelle dichiarazioni per caso.
catch22

5
non funziona quando si utilizzano i moduli secondari.
user3044394

1
Importalo solo nel modulo app, e da nessun'altra parte, non nei sottomoduli
Vardaan Tyagi,

1
Peccato che l'OP non abbia impiegato un secondo per accettarlo come risposta ...
Romeo Sierra,

140

Non hai fornito provider nel tuo modulo:

<strike>import { HttpModule } from '@angular/http';</strike>
import { HttpClientModule, HttpClient } from '@angular/common/http';

@NgModule({
  imports: [
    BrowserModule,
    HttpClientModule,
    BrowserAnimationsModule,
    FormsModule,
    AppRoutingModule
  ],
  providers: [ HttpClientModule, ... ]
  // ...
})
export class MyModule { /* ... */ }

Utilizzo di HttpClient nei test

Sarà necessario aggiungere il HttpClientTestingModulealla configurazione TestBed quando si esegue ng teste si ottiene l'errore "Nessun provider per HttpClient":

// Http testing module and mocking controller
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';

// Other imports
import { TestBed } from '@angular/core/testing';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';

describe('HttpClient testing', () => {
  let httpClient: HttpClient;
  let httpTestingController: HttpTestingController;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [ HttpClientTestingModule ]
    });

    // Inject the http service and test controller for each test
    httpClient = TestBed.get(HttpClient);
    httpTestingController = TestBed.get(HttpTestingController);
  });

  it('works', () => {
  });
});

3
no, non è documentato che httpclientmodule debba essere aggiunto all'elenco dei provider. Ma comunque, ho provato anche la tua risposta per essere sicuro, ma come previsto lo stesso errore continua dopo averlo aggiunto all'elenco dei fornitori.
Himmet Yelekin,

17
Immagino che "HttpClientModule" dovrebbe essere aggiunto alle importazioni, non ai fornitori
Musa Haidari,

30
Ho dovuto aggiungere imports: [HttpClientTestingModule]al mio TestBed.configureTestingModuleper eliminare questo errore nei test .
Yaroslav Stavnichiy,

Il commento di @YaroslavStavnichiy è stata la risposta al mio problema con questo in Jasmine.
E. Maggini,

10
importare {HttpClientTestingModule, HttpTestingController} da "@ angular / common / http / testing";
NitinSingh,

44

Stai ricevendo un errore per HttpClient, quindi per questo ti manca HttpClientModule.

Dovresti importarlo nel file app.module.ts in questo modo -

import { HttpClientModule } from '@angular/common/http';

e menzionalo in NgModule Decorator in questo modo -

@NgModule({
...
imports:[ HttpClientModule ]
...
})

Se anche questo non funziona, prova a cancellare i cookie del browser e prova a riavviare il server. Spero che possa funzionare, ho riscontrato lo stesso errore.


L'aggiunta di HttpClientModule alle importazioni ha risolto il problema, poiché il suo valore non è stato utilizzato, grazie @Vivek kushwaha
vidur punj

27

Ho avuto lo stesso problema. Dopo aver cercato e affrontato il problema, ho trovato la soluzione di seguito

import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';

imports: [
  HttpModule,
  HttpClientModule
]

Importa HttpModulee HttpClientModulein app.module.ts e aggiungi le importazioni come menzionato sopra.


6
l'utilizzo di HttpModule (obsoleto) e HttpClientModule (sostituisce HttpModule) non ha senso
themenace

2
Sì. Importa solo HttpClientModule.
Nir Lanka,

19

Stavo anche affrontando un problema simile facendo le modifiche di seguito, ha funzionato per me

In app.modules.ts

import {HttpClientModule} from '@angular/common/http' 

e nella corrispondente classe di servizio

import { HttpClient } from '@angular/common/http'

costruttore dovrebbe apparire come di seguito

constructor(private http: HttpClient, private xyz: xyzService) {}

Nel file di test

import { HttpClientTestingModule } from '@angular/common/http/testing'

  beforeEach(() => TestBed.configureTestingModule({
    imports: [HttpClientTestingModule]
  }));

L'importazione di HttpClientModule su app.module.ts non è sufficiente per risolvere il problema, ma ti ho comunque votato per avermi ricordato cosa mi mancava.
Auguste,

L'importazione di HttpClientTestingModule ha risolto il problema con le specifiche
Ashokan Sivapragasam

12

Stavo affrontando lo stesso problema, la cosa divertente era che avevo aperto due progetti contemporaneamente, ho cambiato i file app.modules.ts sbagliati.

Innanzitutto, controlla quello.

Dopo tale modifica aggiungere il seguente codice al file app.module.ts

import { HttpClientModule } from '@angular/common/http';

Successivamente, aggiungi quanto segue all'array import nel file app.module.ts

  imports: [
    HttpClientModule,....
  ],

Ora dovresti essere a posto!


9

Ho ricevuto questo errore dopo aver iniettato un servizio che utilizzava HTTPClient in una classe. La classe è stata nuovamente utilizzata nel servizio, quindi ha creato una dipendenza circolare. Potrei compilare l'app con avvisi, ma nella console del browser si è verificato l'errore

"Nessun provider per HttpClient! (MyService -> HttpClient)"

e ha rotto l'app.

Questo funziona:

import { HttpClient, HttpClientModule, HttpHeaders } from '@angular/common/http';
import { MyClass } from "../classes/my.class";

@Injectable()
export class MyService {
  constructor(
    private http: HttpClient
  ){
    // do something with myClass Instances
  }      
}
.
.
.
export class MenuItem {
  constructor(

  ){}
}

Questo rompe l'app

import { HttpClient, HttpClientModule, HttpHeaders } from '@angular/common/http';
import { MyClass } from "../classes/my.class";

@Injectable()
export class MyService {
  constructor(
    private http: HttpClient
  ){
    // do something with myClass Instances
  }      
}
.
.
.
import { MyService } from '../services/my.service';
export class MyClass {
  constructor(
    let injector = ReflectiveInjector.resolveAndCreate([MyService]);
    this.myService = injector.get(MyService);
  ){}
}

Dopo aver iniettato MyService in MyClass ho ricevuto l'avviso di dipendenza circolare. L'interfaccia della riga di comando è stata comunque compilata con questo avviso, ma l'app non funzionava più e l'errore veniva visualizzato nella console del browser. Quindi nel mio caso non ha dovuto fare nulla con @NgModule ma con dipendenze circolari. Consiglio di risolvere gli avvisi di denominazione con distinzione tra maiuscole e minuscole se il problema persiste.


8

Stavo affrontando lo stesso problema, quindi nella mia app.module.ts ho aggiornato il file in questo modo,

import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';

e nello stesso file (app.module.ts) nel mio array @NgModule imports [] ho scritto in questo modo,

HttpModule,
HttpClientModule

6

Ho trovato un problema più sottile. Importare HttpClientModule nel file app.module.ts come segue:

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

import { AppComponent } from './app.component';
import { HttpClientModule } from '@angular/common/http';

@NgModule({
  declarations: [
    AppComponent
],

imports: [
    BrowserModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }


4

Aggiungi HttpModulee HttpClientModulesia le importazioni che i provider in app.module.ts hanno risolto il problema. importazioni ->import {HttpModule} from "@angular/http"; import {HttpClientModule} from "@angular/common/http";


Ho lo stesso problema. Ho cercato in App_modules e non ho una directory http nel percorso @angular -> common Eseguo "npm update" Sto lavorando con Windows 8.i, nodejs versión 9.7.1. Sto leggendo il libro di Valerio de Sanctis ... cosa può essere? Grazie
Diego

esegui semplicemente 'npm i' con la modalità amministratore.
sumit mehra,

3

Basta importare HttpModulee l' HttpClientModuleunico:

import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';

Non c'è bisogno di HttpClient.


3

Ho avuto un problema simile. Per me la soluzione era importare HttpModule prima del modulo HttpClient:

import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
.
.
.
imports: [
  BrowserModule,
  HttpModule,
  HttpClientModule
],

1

Nel mio caso, l'errore si è verificato durante l'utilizzo di un servizio da un modulo angolare situato in un pacchetto npm, in cui il servizio richiede l'iniezione di HttpClient. Durante l'installazione del pacchetto npm, è node_modulesstata creata una directory duplicata all'interno della directory del pacchetto a causa della gestione dei conflitti di versione di npm ( engi-sdk-clientè il modulo contenente il servizio):

inserisci qui la descrizione dell'immagine

Ovviamente, la dipendenza da HttpClientnon viene risolta correttamente, poiché le posizioni di HttpClientModuleiniettate nel servizio (vive nella node_modulesdirectory duplicata ) e quella iniettata app.module(la corretta node_modules) non corrispondono.

Ho anche avuto questo errore in altre configurazioni contenenti una node_modulesdirectory duplicata a causa di una npm installchiamata errata .

Questa configurazione difettosa porta anche all'eccezione di runtime descritta No provider for HttpClient!.

TL; DR; Controlla le node_modulesdirectory duplicate , se nessuna delle altre soluzioni funziona!


0

Nel mio caso, ho scoperto che una volta ricostruita l'app funzionava.

Avevo importato il file HttpClientModulecome specificato nei post precedenti ma continuavo a ricevere l'errore. Ho fermato il server, ricostruito l'app ( ng serve) e ha funzionato.


0

Nel mio caso, stavo usando un servizio in un sottomodulo (NON il AppModule di root) e l'HttpClientModule è stato importato solo nel modulo.

Quindi devo modificare l'ambito predefinito del servizio, cambiando 'fornitaIn' in 'qualsiasi' nel decoratore @Injectable.

In base all'impostazione predefinita, se si utilizza angular-cli per generare il servizio, il 'fornisceIn' era impostato su 'root'.

Spero che sia di aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.