mon*_*_za 53 node-modules angular
我正在关注Angular关于Http的这个基础教程.
正如可以在"设置:安装模块"部分中看到的那样,他们导入HttpClientModule,如下所示:
import {HttpClientModule} from '@angular/common/http';
Run Code Online (Sandbox Code Playgroud)
当我在我的项目中尝试这个时,我收到以下错误:"找不到模块'@ angular/common/http'".
我尝试导入以下模块,如下所示:
import { HttpModule } from '@angular/http';
Run Code Online (Sandbox Code Playgroud)
然后是我的进口部分:
imports: [
HttpModule
],
Run Code Online (Sandbox Code Playgroud)
现在的问题是,我无法将此HttpModule注入我的服务对象,并且我收到以下错误:"找不到模块HttpModule".
这是我的服务类:
import { Injectable, OnInit } from '@angular/core';
//Custom Models
import { Feed } from '../Models/Feed';
@Injectable()
export class FeedsService {
constructor(private httpClient: HttpModule) {}
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
更新
当我意识到我无法按照教程导入模块时,我应该做的就是运行npm update命令,更新我的所有包.
eko*_*eko 48
重要:HttpClientModule适用于Angular 4.3.0及更高版本.查看@Maximus的评论和@ Pengyy的 答案以获取更多信息.
您需要注入HttpClient组件/服务而不是模块.如果您导入HttpClientModule您的@NgModule
// app.module.ts:
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
// Import HttpClientModule from @angular/common/http
import {HttpClientModule} from '@angular/common/http';
@NgModule({
imports: [
BrowserModule,
// Include it under 'imports' in your application module
// after BrowserModule.
HttpClientModule,
],
})
export class MyAppModule {}
Run Code Online (Sandbox Code Playgroud)
所以改变
constructor(private httpClient: HttpModule) {}
Run Code Online (Sandbox Code Playgroud)
至
constructor(private httpClient: HttpClient) {}
Run Code Online (Sandbox Code Playgroud)
因为它已写在文档中:https://angular.io/guide/http#making-a-request-for-json-data
但是,因为您导入了HttpModule
你需要注入constructor(private httpClient: Http)作为@Maximus评价和陈述@Pengyy在这个答案.
以及有关差别的更多信息HttpModule,并HttpClientModule检查这个答案:/sf/answers/3159090581/
Pen*_*gyy 35
重要更新:
HttpModule而Http从@angular/http已经废弃了,因为角V5,应使用HttpClientModule与HttpClient从@angular/common/http而是指更新日志.
对于以前从**@4.3.0开始的 Angular版本,您应该Http从NgModule的导入数组中注入@angular/http并HttpModule导入.
import {HttpModule} from '@angular/http';
@NgModule({
...
imports: [HttpModule]
})
Run Code Online (Sandbox Code Playgroud)
注入http组件或服务
import { Http } from '@angular/http';
constructor(private http: Http) {}
Run Code Online (Sandbox Code Playgroud)
对于(包括)4.3.0之后的 Angular版本,您可以使用HttpClientfrom @angular/common/http而不是Httpfrom @angular/http.不要忘记先导入HttpClientModule你NgModule的导入阵列.
请参阅@ echonax的回答.
| 归档时间: |
|
| 查看次数: |
108448 次 |
| 最近记录: |