【问题标题】:Property 'get' does not exist on type 'HttpClientModule'“HttpClientModule”类型上不存在属性“get”
【发布时间】:2018-05-02 08:44:03
【问题描述】:


我对 Angular js 非常陌生,正在尝试从 youtube 学习它,我在代码中遇到了提到的问题
,我不明白我的代码中缺少什么

错误

在尝试访问 HttpClientModule 的获取服务时出现“属性 'get' 不存在于类型 'HttpClientModule'” 错误。,
以下是代码详细信息
app.component.ts 文件是

import { Component,OnInit  } from '@angular/core';
   import {HttpClientModule} from '@angular/common/http';
     @Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
   })
   export class AppComponent {

   constructor(private http:HttpClientModule){};
   title = 'app';
   ngOnInit() {
   this.http.get('https://my-json-server.typicode.com/techsithgit/json-faker-
   directory/profiles').
    subscribe((data)=>{
      console.log(data);
    });

   }

}

app.module.ts 文件是

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

import { AppComponent } from './app.component';

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

Package.json 文件是

{
  "name": "trust",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^5.0.2",
    "@angular/common": "^5.0.2",
    "@angular/compiler": "^5.0.2",
    "@angular/compiler-cli": "^5.0.2",
    "@angular/core": "^5.0.2",
    "@angular/forms": "^5.0.2",
    "@angular/http": "^5.0.2",
    "@angular/platform-browser": "^5.0.2",
    "@angular/platform-browser-dynamic": "^5.0.2",
    "@angular/platform-server": "^5.0.2",
    "@angular/router": "^5.0.2",
    "core-js": "^2.4.1",
    "rxjs": "^5.4.2",
    "typescript": "^2.6.1",
    "zone.js": "^0.8.18"
  },
  "devDependencies": {
    "@angular/cli": "1.4.9",
    "@angular/compiler-cli": "^4.2.4",
    "@angular/language-service": "^4.2.4",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.2.0",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.2.0",
    "tslint": "~5.7.0",
    "typescript": "~2.3.3"
  }
}

【问题讨论】:

  • 尝试导入 HttpClient 然后 :D import { HttpClient } from '@angular/common/http';

标签: angular


【解决方案1】:

请像这样检查你的文件,我的环境参数:

Angular CLI: 9.1.7
Node: 12.7.0
OS: darwin x64

Angular:
...
Ivy Workspace:

Package                      Version
------------------------------------------------------
@angular-devkit/architect    0.901.7
@angular-devkit/core         9.1.7
@angular-devkit/schematics   9.1.7
@schematics/angular          9.1.7
@schematics/update           0.901.7
rxjs                         6.5.4

app.module.ts

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

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { CribListingComponent } from './crib-listing/crib-listing.component';
import { CribCardComponent } from './crib-card/crib-card.component';
import { HttpClientModule } from '@angular/common/http';


@NgModule({
  declarations: [
    AppComponent,
    CribListingComponent,
    CribCardComponent
  ],
  imports: [
    BrowserModule,
    AppRoutingModule,
    HttpClientModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

app.component.ts:

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'hello-world';
}

婴儿床列表.component.ts

import { Component, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map';

@Component({
  selector: 'app-crib-listing',
  templateUrl: './crib-listing.component.html',
  styleUrls: ['./crib-listing.component.css']
})
export class CribListingComponent implements OnInit {

  cribs: Array<any>;
  constructor(private http: HttpClient) { }

  ngOnInit(): void {
    // make an http request
    this.http.get('data/cribs.json')
    .subscribe(
      data => console.log(data)
    );
  }

}

【讨论】:

    【解决方案2】:

    app.module.ts

    import { HttpClientModule } from '@angular/common/http'
    
    @NgModule({
      declarations: [
        AppComponent
      ],
      imports: [
        HttpClientModule
      ],
      providers: [],
      bootstrap: [AppComponent]
    })
    export class AppModule { }
    

    app.component.ts

    import { HttpClient } from '@angular/common/http';
    
    @Component ({
      selector:'app-root',
      templateUrl: './app.component.html',
      styleUrls: ['./app.component.css']
    })
    
    export class AppComponent {
      results;
      constructor(private http: HttpClient) {}
    
      ngOnInit() {
        this.todaydate = this.myservice.getTodayDate();
        this.http.get("http://jsonplaceholder.typicode.com/users").subscribe(data => {
          console.log(data);
         this.results = data;
       });
      }
    }
    

    【讨论】:

      【解决方案3】:

      此外,如果您没有注意 HTTPClient 的导入,则会收到此错误。通常它默认为

      import { HttpClient } from 'selenium-webdriver/http';
      

      【讨论】:

      • 是的,我也遇到过这个问题。 HttpClient 是从“selenium-webdriver/http”而不是“@angular/common/http”导入的。也检查你的导入
      【解决方案4】:

      从标头和导入中更改/添加那些代码/方法

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

      并在导入部分添加以下代码:

       HttpClientModule,
      

      如图所示:

      Pic1

      在您尝试访问 httpClient 的类中包含这些标头:

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

      对于地图,请使用此代码 .map(res =&gt; res ); 而不是 .map((res: Response) =&gt; res.json() );

      从这张图片中你可以看到如何解决“get”问题:

      Pic2

      为了获得清晰的概念,请观看 pic1 和 pic2。 谢谢。

      【讨论】:

        【解决方案5】:

        您需要使用HttpClient 而不是HttpClientModule 来发出http 请求。

        app.module.ts 中,导入 HttpClientModule(参见下面的“导入”):

        import { HttpClientModule } from '@angular/common/http';
        @NgModule({
            imports: [
                  HttpClientModule,
            ...
            ],
            ...
        })
        export class AppModule { }
        

        然后,在app.component.ts中导入HttpClient

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

        现在,从

        更改您的 AppComponent Tor
        constructor(private http: HttpClientModule){};
        

        constructor(private http: HttpClient){};
        

        【讨论】:

        • 我已经尝试过提及.. 但我在控制台中遇到错误。 “未捕获的错误:模块'AppModule'导入的意外值'HttpClient'。请添加@NgModule注解”
        • 您需要在 AppModule 中“导入”HttpClientModule,并在组件中使用 HttpClient。对不起,如果我的回答不清楚。更新了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-01-09
        • 2021-07-10
        • 2017-07-22
        • 2023-03-26
        • 2023-04-02
        • 2019-12-20
        相关资源
        最近更新 更多