首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Angular无法在类中初始化服务(HttpClient)

Angular无法在类中初始化服务(HttpClient)
EN

Stack Overflow用户
提问于 2018-07-16 17:47:42
回答 1查看 1.3K关注 0票数 1

我想通过创建来自类的数据访问对象来隔离http交互,这样在组件中我就可以简单地获得如下数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// dashboard.component
import { AppUser } from './appuser.service'

export class DashboardComponent implements OnInit {
  user: AppUser = new AppUser();

  constructor() { }

  ngOnInit() {
    let id = JSON.parse(window.localStorage.getItem('session')).userId;
    this.user.find(id) // 'find' is from base class
      .subscribe(
        // handle user data
      );
  }
}

我定义了一个基类和一个子类,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// base-resource.service
import { HttpClient } from '@angular/common/http';
...
export class BaseResource {
  private fullpath: string;
  protected http: HttpClient;

  constructor (path: string) {
    this.fullpath = path;
  }

  find (id): Observable<Object> {
    return this.http.get(this.fullpath + '/' + id); // this line throws Error!
  }
}

// app-user.service
...
export class AppUser extends BaseResource {
  constructor(data?) {
    super('api/appusers');
  }
}

但是,这会在基类函数中生成一个错误:ERROR TypeError: Cannot read property 'get' of undefined

我的'AppUser‘实例显然是从'BaseResource’继承了find,但是find选择了'AppUser‘实例,因为thishttp的值不可用。我曾尝试将http声明为公共和私有以及受保护的,但没有效果。我想我错过了一些关于如何扩展类的更大的图景。

具体地说,我想我的问题是,当函数需要访问基类的上下文时,如何将函数抽象为基类。

(使用Angular 6.0.4)

编辑我更新了标题,因为很明显这是在类中实例化HttpClient服务的问题。

EN

回答 1

Stack Overflow用户

发布于 2018-07-16 18:03:03

错误是因为没有实例化HttpClient,所以当您使用它时,它是未定义的。

您应该将HttpClient注入到AppUser中,并通过构造函数将其传递给BaseResource

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export class AppUser extends BaseResource {
  constructor(HttpClient http) {
    super(http, 'api/appusers');
  }
}

和base-resource.service中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import { HttpClient } from '@angular/common/http';
...
export class BaseResource {
  private fullpath: string;
  protected http: HttpClient;

  constructor (httpClient: HttpClient, path: string) {
    this.fullpath = path;
    this.http = httpClient;
  }

  find (id): Observable<Object> {
    return this.http.get(this.fullpath + '/' + id); // this line throws Error!
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51367472

复制
相关文章
哈佛的“虫虫”机器人已经能爬上墙了
新发表在《科学机器人》杂志上的一篇论文详细介绍了一个被称为“哈佛电动附着微型机器人”(简称HAMR-E)的系统,该系统利用静电力抓住水平、垂直、甚至倒立的金属表面。
AiTechYun
2018/12/29
5290
哈佛的“虫虫”机器人已经能爬上墙了
我天,map竟成性能瓶颈了
今天研读map的源码时,发现之前的代码在使用map时出现了性能问题,源码简化如下,
程序员的园
2024/07/18
990
我天,map竟成性能瓶颈了
我已经会手写没用的loader了
webpack的loader配置应该谁都会,讲道理,我们会使用loader,会配置loader就够了。今天只是了解loader的基本概念和基本的运行原理,了解了就能自己写一个loader了,至于手写一些复杂的loader目前就算了。
wade
2020/09/04
5020
2024年了还在用WIN11?我已经用NAS体验上了“WIN12”了 - 熊猫不是猫QAQ
正如标题所示,今天我们要用NAS来尝试体验民间版的“WIN12”。该项目并不是真正的Windows系统,而是民间大佬自己设想并开发的一套概念版罢了,内容上仅供体验一些简单的功能。不过项目的完成度都不错的,特别完善的项目了,感兴趣的可以尝试体验一下。
熊猫不是猫
2024/03/24
2930
2024年了还在用WIN11?我已经用NAS体验上了“WIN12”了 - 熊猫不是猫QAQ
我想到的Netty功能,别人已经实现了
Netty是年初最先学习的框架,近期的图书租借系统想要用上聊天功能,实现一对一对话聊天,在用户登录服务端时,获取用户ip与id绑定,放入channelgroup,每次循环遍历这个ip对应的channel,否则返回false,在用户状态取到是否在线,在线状态属于handler消息功能。
疯狂的KK
2019/12/31
1.3K0
我想到的Netty功能,别人已经实现了
毕业了5年的同学突然告诉我,他已经是架构师了
作为一名程序员,都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业,知识体系复杂且知识更新速度非常快,“一日不学就会落后”。
美的让人心动
2019/08/01
5010
毕业了5年的同学突然告诉我,他已经是架构师了
你的主机被墙了?
这是一种新的墙,以前我新建日本的vps的时候,其IPv4地址是直接的ping不通,但这次不一样,IPv4地址能够正常的ping,可就是国外与国内扫描端口不一样!
福贵
2018/10/22
4.6K0
你的主机被墙了?
美创运维日记|我的内存都去哪里了?
在疫情期间,小编不得不待在家中远程办公。但变的是办公方式,不变的是美创运维的7*24小时不间断支持。
数据安全
2020/08/19
1.6K0
美创运维日记|我的内存都去哪里了?
浩哥说:还没做VR的手机厂商已经out了!
上一篇文章和大家分享了为什么我要做投资,这一篇主要想和大家聊聊我的投资方向。 现在做投资的人挺多,细分领域也很多。其实做投资和做企业有一点很像,都要聚焦。我的理念是一定要在我所从事的细分领域中成为绝对
新智元
2018/03/14
5760
浩哥说:还没做VR的手机厂商已经out了!
曹大带我学 Go(5)—— 哪里来的 goexit
在学员群里,有同学在用 dlv 调试时看到了令人不解的 goexit:goexit 函数是啥,为啥 go fun(){}() 的上层是它?看着像是一个“退出”函数,为什么会出现在最上层?
梦醒人间
2021/06/17
7800
实名羡慕!这些人已经用上了Sora
自 OpenAI 推出 Sora 以来,一直是该团队的成员放出演示视频,何时向公众开放测试我们不得而知。
机器之心
2024/03/27
1320
实名羡慕!这些人已经用上了Sora
计算机的国产灵魂到底差在了哪里
最近,网上流传着一个国产系统PK国外系统的视频。视频中作者采用两台型号一样配置一样的电脑,分别安装了中兴新支点操作系统和Windows10,针对开关机、打开软件等方面进行了对比测试。
pak
2022/09/14
3.1K0
看了这篇,我确定你已经彻底搞懂Java的继承了
遇到认真的读者是作者的一种幸运,真的,上一篇接口推送后,有好几个读者留言说,“二哥,你有一处内容需要修正,应该是接口中不能有 private 和 protected 修饰的方法。”说实话,看到这样的留言,我内心是非常欣慰的,因为你投出去的一块石头在水面上激起了一串美丽的涟漪。
沉默王二
2020/06/09
3820
上了名校才知道,我们到底输在哪里
你看那北大毕业的还有卖猪肉的,清华毕业的还当保安,我手下刚招来的985大学的高材生,来了还不是要从打杂开始干?
IT派
2018/08/10
4560
上了名校才知道,我们到底输在哪里
临床前药物研发,AI搞出来的已经占一半了? | 对撞派 · 圆桌实录
量子位智库 发自 凹非寺 量子位 | 公众号 QbitAI 有一条著名的双十定律,是新药研发的心头痛:平均每一款新药都需要耗费超过十年和十亿美元才能研发成功,研发效率相当低下。 现在,AI制药为新药研发创造了一种新可能。 英矽智能,被CB Insights列为2022年最有前景的100家人工智能公司之一,也是AI制药领域的明星公司。 过去12个月,英矽智能在人工智能平台的驱动下,发现了7款临床前候选药物,包括首款由AI设计的治疗新冠的临床前候选药物,以及两款合成致死策略下的潜在治疗癌症的候选药物,其进展最快
量子位
2022/06/02
2360
临床前药物研发,AI搞出来的已经占一半了? | 对撞派 · 圆桌实录
同样是5年的开发经验,差距在哪里了?
我现在就职于一家中型的互联网企业,去年年底入职的薪资和待遇都很不错,但是总结起来说的好听就是全村人的希望,说的不好听就是一个人几乎干了一个项目组的事。
Java技术栈
2018/07/31
3190
同样是5年的开发经验,差距在哪里了?
为什么说手工表格管理固定资产已经OUT了?
以电子表格、纸质数据为主的传统固定资产管理和盘点的方式已被各种各样的固定资产管理系统所取代。人工管理的弊端和缺陷如下:
易点易动固定资产管理系统
2021/09/18
5540
为什么说手工表格管理固定资产已经OUT了?
谷歌版ChatGPT Bard开放测试!我们已经体验上了
机器之心报道 机器之心编辑部 机器之心已经体验上了Bard。 在 OpenAI GPT-4 发布、微软将 GPT-4 接入 Office 全家桶这样一波碾压后,谷歌也有了新的动作! 刚刚,谷歌宣布正式公开发布其聊天机器人产品 Bard。谷歌表示此举是为了广泛获得来自用户的反馈,以支持其在对话式生成模型赛道上与微软竞争。 据谷歌 CEO 桑达尔·皮查伊的推特,此次开放使用将首先从美国和英国的用户开始 —— 用户可以申请加入 Bard 的候补名单(waitlist)。 此外,Bard 目前仅支持英语,且不具备编
机器之心
2023/03/29
3620
谷歌版ChatGPT Bard开放测试!我们已经体验上了
Groovy 我的Class在哪里
通过将getLocation方法添加到Class类,Groovy 2.5.0可以获得Class文件的位置。 如果Class是JDK的一部分,则返回的位置是null,否则是我们使用Class文件获取JAR文件或源文件(如果可用)的位置。
白石
2019/08/23
6200
我差不多,哦不我已经是个废人了No.4
我是小蕉。 好吧大家都说技术看不懂,那好吧,今天一点技术都没有,主要谈谈一个人来如何懒起来。 前几日因为要部署一个ElasticSearch集群,虽然只有三台。但是,我就是不想一台一台去部署啊,烦死个人了。万一后面要部署1000台,那可要怎么办??真心一台一台去处理咩。我懒得要命,我才懒得这样干。 就抽象一下,提炼出一个垃圾批量部署的法子。安装包准备->环境准备->安装包上传解压->配置变更->启动服务器。看起来也就长这样,一个shell脚本搞定,虽然花了半天的时间,但是在后面操作其他机器的
大蕉
2018/02/05
6130

相似问题

R中数据帧的比较

36

匹配R中的数据帧

10

匹配R中的数据帧

33

R:定义数据帧中因子的级别

10

数据帧值误差中两列的比较

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文