繁体   English   中英

HttpClientModule返回空数组

HttpClientModule return empty Array

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我想使用HttpClientModule来访问Post的Array。 我只是在学习Angular,所以有人可以向我解释为什么这是错误的

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';
import { HatedPostListComponent } from './hated-post-list/hated-post-list.component';
import { HatedAboutUsComponent } from './hated-about-us/hated-about-us.component';
import { HatedLoginComponent } from './hated-login/hated-login.component';
import { DataService } from './services/data.service';

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

app.component.ts

import { Component } from '@angular/core';
import { DataService } from './services/data.service';
import { Post } from './models/user.model';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'Frontend';
  constructor (private _svc: DataService) {
    console.log('Data in component' + this._svc.data);
  }
  getDate(): Array<Post> {
    return this._svc.data;
  }
}

数据服务

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Post } from '../models/user.model';

@Injectable()
export class DataService {
  baseURL: string;
  data: Array<Post> = [];
  constructor(private _http: HttpClient) {
    this.baseURL = 'http://localhost:5000/Posts?from=0&number=10';

  }
  getDate() {
    this._http.get<Array<Post>>(this.baseURL)
    .subscribe(response => {
      this.data = response;
      console.log('Subcribed data:' + this.data);
      console.log('Subcribed response:' + response);
    }
  );
  console.log('Data after subcribe:' + this.data);
  }
}

这就是我得到的结果当我subcribe()一切都很好时,但是之后我的数据为空

2 个回复

您需要调用该服务,并订阅不在该服务中的组件。

将您的服务代码更改为

getDate() {
   return this._http.get<Array<Post>>(this.baseURL);
}

在你的组件中

 getDate(): Array<Post> {
    this._svc.getDate().subscribe(
      res => {
        console.log(res);       
      },
      err => console.log(err)
    );
  }

将您的实现更改为跟随您将获得预期的结果。

您的组件:

getDate(){
  this._svc.getDate().subscribe((res)=> {
    console.log(res)
  });
}

您的服务:

getDate() {
  return this._http.get(this.baseURL);
}

这应该工作。 逻辑问题是您只是在监听服务中数据的当前值。 如果该时间点服务处于[]位置,那么从API接收数据后,除非您订阅该更改,否则不会通知您组件更改。

1 Sonos Api getPlaylist 返回空数组

我创建了 2 个播放列表:播放列表 1 和播放列表 4。 getPlaylist api 返回我的播放列表 1 的曲目信息,而它返回我的播放列表 4 的空信息。此行为在官方 Sonos 应用程序中不会发生,在这里我可以看到两个播放列表的所有曲目信息。 下面是 2 个 getPlaylist 调 ...

2020-09-14 07:34:18 0 23   sonos
2 Express 返回空数组

我目前有以下代码 该代码应该查询 2 个 MongoDB 数据库并构造一个包含特定信息的对象数组,这些信息将发送到客户端。 但是,当我调用该端点时,我总是得到一个空数组。 我尝试使函数async并使它们wait嵌套函数的结果但没有成功 - 仍然是一个空数组。 任何建议表示赞赏! ...

3 $ _FILES返回空数组

我有一个像 我有一个名为site的控制器,并且我设置了路由 我的站点控制器中有gallery_upload函数,例如 但这给了我空数组 ...

4 $ wpdb wordpress返回空数组

自昨天以来,我一直在尝试解决一个问题。 我正在尝试在wordpress上通过$wpdb传递SQL查询,但是在尝试回显结果时,我一直得到一个空数组。 我试过了print_r和var_dump ,都给了我空值。 如果有人可以提供帮助,我将不胜感激,因为我似乎无法解决这个问题。 我也尝 ...

5 json返回空数组

页面加载时,我使用.ajax调用服务器端代码并​​返回json。 我遇到的问题是我得到一个空数组。 因此,在我的“成功:函数(数据)”中,说的是data [0] .id未定义。 有什么办法可以解决这个问题? ...

6 Codeigniter返回空数组

我是Codeigniter的新手,尝试编写一个简单的博客应用程序: 控制器:posts.php 型号:post.php 我已经在数据库中填充了帖子表。 但是,当我尝试获得结果时,我得到的却是: mysql&gt;描述帖子; 此代码有什么问题,我该如何解决? ...

8 connectedAccessories返回空数组

我正在使用以下方法检查我的蓝牙配件是否已连接到我的iPhone: 我知道ExternalAccessory框架只适用于MFi设备,我在Info.plist文件中声明了所有需要的协议。 除了一种情况外,这种情况正常工作:当我重新启动智能手机并再次启动我的测试应用程序时,即使外围设备已 ...

9 calendarsForEntityType返回空数组

我正在通过EKEventStore发生奇怪的行为。 启动了该应用,但不允许访问我的日历。 显然,我无法将日历设置为“已授予=否” ... 杀死了应用程序。 进入设置并启用对日历的访问。 再次运行该应用程序,现在我得到“ Granted = YES”,但[ ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM