Angular 使用6个get请求从网站中提取数据

Angular 使用6个get请求从网站中提取数据,angular,typescript,angular-http,Angular,Typescript,Angular Http,我试图从web上提取JSON文件,但我做错了。这是我的密码: import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http' import { Observable } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class PullanaliticsService { theUrl: str

我试图从web上提取JSON文件,但我做错了。这是我的密码:

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

import { Observable } from 'rxjs';


@Injectable({
  providedIn: 'root'
})
export class PullanaliticsService {
  theUrl: string = 'https://jsonplaceholder.typicode.com/post';
  res = [];
  private httpClient: HttpClient;
  constructor() { }


  httpGetAsync()
  {
      var t = this.httpClient.get(this.theUrl).subscribe((res) => {
        console.log(res);
      });

      return t

}
我更改了这个。URL为每个人都可以查看的页面

我得到一个错误:

DashboardComponent.html:4 ERROR TypeError: Cannot read property 'get' of undefined
    at `PullanaliticsService.push../src/app/pullanalitics.service.ts.PullanaliticsService.httpGetAsync (pullanalitics.service.ts:22)`

这听起来像是URL不起作用,但我不知道为什么

这里您必须在构造函数中初始化http,如下所示:


构造函数私有httpClient:httpClient{}

您的服务应该将httpClient注入其中。您声明了它,但从未在代码中设置它的值。通过在构造函数中提供http客户端,可以让angular为您设置该值

@Injectable({
  providedIn: 'root'
})
export class PullanaliticsService {
  theUrl: string = 'https://jsonplaceholder.typicode.com/post';
  res = [];
  constructor(private httpClient: HttpClient) { }


  httpGetAsync() {
      return this.httpClient.get(this.theUrl);
  }
}
让angular在构造函数中这样做只是一种快捷方式:

export class PullanaliticsService {
  private httpClient: HttpClient;
  constructor(_httpClient: HttpClient) {
    this.httpClient = _httpClient;
  }
}

为什么这会成为一个错误difforence@Vladimir_314159因为否则,正如您所看到的,它实际上并没有被Angular的DI系统注入,因此在运行时是未定义的。目前您只有一个未初始化的私有属性,Angular仅自动提供构造函数注入。@edupeeth谢谢,但修复后仍会抛出相同的错误。如果您遵循此建议,则会出现相同的错误,这似乎令人惊讶。也许创建一个stackblitz来演示这个问题?我在另一个文件中也遇到了同样的问题,这就是为什么现在修复了。非常感谢。这不是告诉你URL不工作,而是告诉你没有正确地将HttpClient注入到你的服务中。阅读文档:。您可以从dev tools network选项卡上看出,这里甚至没有尝试网络请求@jonrsharpe正确地指出,在这个特定错误中,url是否返回数据并不重要。您在最后描述的行为仍然是让Angular注入数据,这是TypeScript语法参数属性速记,而不是Angular功能。这是正确的。我打算把重点放在这个事实上,angular是做注射的东西。