Angular 服务 - GET 返回未定义

2023-12-19

我正在尝试使用角度服务从数据库中获取用户。在服务中执行 GET 请求时,我可以console.log(res)并得到回应。但是,当我尝试从另一个组件获取数据时,它总是出现undefined。请帮忙。

用户.service.ts

import { Injectable } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { HttpClient, HttpClientModule } from '@angular/common/http';

@Injectable()
export class UsersService {

  constructor(
    private http: HttpClient,
    private route: ActivatedRoute
  ) { }

  users: any;

  getUsers() {
    this.http.get('http://localhost:3000/api/users').subscribe(res => {
      this.users = res;
      return this.users;
    });
  }

}

应用程序组件.ts

import { UsersService } from './users.service';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss'],
  providers: [ UsersService ]
})

constructor(
    private http: HttpClient,
    private route: ActivatedRoute,
    private usersService: UsersService
  ) {
    this.users = usersService.getUsers();
  }

当我尝试在 app.component.html 中使用它时......

<div *ngFor="let user of users"></div>

用户未定义


如果您使用服务来集中用户数据,请考虑以下内容:

import { Injectable } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { HttpClient, HttpClientModule } from '@angular/common/http';

@Injectable()
export class UsersService {

  constructor(
    private http: HttpClient,
    private route: ActivatedRoute
  ) {
     this.getUsers()
          .subscribe(data => this.users = data);
  }

  users: any;

  getUsers() {
    return this.http.get('http://localhost:3000/api/users');

  }

}

然后在你的组件中:

constructor(
    private http: HttpClient,
    private route: ActivatedRoute,
    public usersService: UsersService <------ changed to public to make it available to the template
  ) {
     // this.users = usersService.getUsers(); <------ commented out, as users is now centralized in the service
  }

并在您的模板中:

<div *ngFor="let user of usersService.users"></div>

通过进行这些更改,您的 getUsers() 方法将仅在创建 UsersService 时(第一次出现在提供程序数组中)时被调用,并且您的用户数据将可供注入 UsersService 的任何组件使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 服务 - GET 返回未定义 的相关文章

随机推荐

  • 使用 Tor 运行 Puppeteer

    我安装了 Tor Expert Bundle 并且想使用 Puppeteer 运行它 I try const browser await puppeteer launch headless false args proxy server s
  • 更新后 Fabric 崩溃:[Fabric isCrashlyticsCollectionEnabled]:无法识别的选择器发送到类 0x10c0bb918

    今天 pod 更新后 Fabric 崩溃了 面料1 9 0 Fabric isCrashlyticsCollectionEnabled unrecognized selector sent to class 0x10c0bb918 崩溃线
  • Linux系统调用

    我能够获得系统调用的执行及其在内核中的处理 但我还不清楚一些事情 进入 swi 例程后 内核保存 用户模式寄存器在堆栈上 问题是 是谁的堆栈 因为 swi 处理和相应的系统调用例程需要堆栈帧来工作 如果是内核自己的堆栈 那么从哪里分配堆栈
  • 为什么数据流步骤无法启动?

    我有一个线性三步数据流管道 由于某种原因 最后一步开始 但前面的两个步骤挂起Not started在我放弃并终止这份工作之前很长一段时间 我不确定是什么导致了这个问题 因为同样的管道过去曾成功运行过 而且我很惊讶它没有在日志中显示任何阻止前
  • 更改成员资格连接字符串

    我是 ASP NET 成员资格新手 我需要帮助以编程方式更改其连接字符串 到目前为止我尝试过的是 我创建了一个类项目名称 Sample 作为命名空间 并扩展了System Web Security SqlMembershipProvider
  • C++中接口类和实现类的并行继承

    我正在尝试以与 Java 接口类似的方式使用 C 抽象基类 假设我们有以下仅具有纯虚函数的接口类 class Shape virtual double area 0 class Square public Shape virtual voi
  • 最简单的反向代理[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找一种方法来简单地在本地设置连接到远程站点的代理 我不想在系统中正确安装任何东西 如果我可以使用单个命令行调用来调用它 而不是使用单个配置文件
  • 选择一个数据框中与另一数据框中部分匹配的行

    我希望在一个数据框中选择行 data 1 部分匹配第二个数据帧中的行 keep these 得到desired result 我在这里发现了几个基于一列匹配的问题 但我想在三列上匹配 STATE COUNTY and CITY 到目前为止
  • 在 Eclipse-Java EE 上,如何更改树视图上选定元素的颜色设置?

    我最近在 Eclipse Java EE Luna 上切换到深色主题 甚至尝试了其他深色主题 例如月出 但我总是最终不得不调整一些设置以便能够阅读内容 顺便说一下 我必须每次重新启动 Eclipse 时都会重新设置 我希望他们尽快解决该问题
  • 访问剪贴板的第 N 项

    有没有办法从剪贴板中检索多个项目 我正在使用这样的东西 Dim clipboard As MSForms DataObject Dim str1 As String Dim str2 As String Set clipboard New
  • MPI中如何知道进程正在哪个核心上运行?

    我目前正在开发一个项目 我需要知道 MPI 中当前运行进程的处理器的 coreid MPI中有一个函数叫做MPI Get processor name char name int resultlen 这仅给出进程正在运行的节点的名称 我想知
  • 如何清除v2谷歌地图中的所有标记?

    我需要清除 v2 谷歌地图中的所有标记 再次需要添加一些标记 如果有人知道答案 请分享您的想法 您可以使用googleMap clear https developer android com reference com google an
  • 如何在unix中仅替换>和<之间的一个换行符

    假设我有一条文字 this n is gt n lt 我想用 none 替换换行符 这将导致 this n is gt lt 如何实现这一目标 我尝试使用以下内容 echo this n is gt n lt sed e s gt n g
  • 选项卡栏图标选定的图像

    如何自定义标签栏上选定的图像 图标 这可能吗 请指教 谢谢 无需添加任何子视图即可实现 在定义选项卡栏的类中设置 tabBarItem 至 gt gt UITabBarItem tabBarItem1 self tabBar tabBar
  • 与逻辑语句匹配的 Rcpp 矩阵的子集

    在 R 中 如果我们有一个数据矩阵 比如一个 100 x 10 矩阵 X 以及一个具有可能值 0 1 2 3 的 100 元素向量 t 我们可以使用简单的方法轻松找到 X 的子矩阵 y句法 y X t 1 但是 问题是 我如何使用 Rcpp
  • “d3.translateExtent”坐标如何工作?

    jsfiddle演示 https jsfiddle net sarathsaleem 76t03kbu 我正在尝试向圆圈添加拖动并尝试应用translateExtent 那么如何将拖动边界限制在矩形范围内呢 var height 500 v
  • Python3 globals() 和 locals() 内容

    在我的Python3学习中 在尝试globals 和locals 时 我做了一个非常基本的 独立的Python程序并收到了结果为此我请求专家解释 然后 我在我的 Python 程序 任何 中执行了相同的 2 个函数 并在我的程序中收到了许多
  • 在 T-SQL 中将分钟格式化为小时,将分钟格式化为十进制数

    有没有一种干净而简单的方法将整数格式化为小时和分钟的十进制表示形式 非常遗憾的是 T SQL 中没有 Timespan 这样的东西来支持这一点 需要明确的是 如果我有 70 分钟 我想将其转换为 1 小时 10 分钟 即1 10 我还想将其
  • 为什么编译器不能在不使用 const 注释的情况下检测到函数是常量?

    在铁锈中 const函数中可以放入的代码非常有限 例如for不允许循环 也不允许任何非循环const函数调用 我知道堆分配存在问题const函数 但为什么下面的代码无效 fn add a u8 b u8 gt u8 a b const A
  • Angular 服务 - GET 返回未定义

    我正在尝试使用角度服务从数据库中获取用户 在服务中执行 GET 请求时 我可以console log res 并得到回应 但是 当我尝试从另一个组件获取数据时 它总是出现undefined 请帮忙 用户 service ts import