如何在打字稿订阅功能之外获取价值

2024-05-06

我对某些服务有以下订阅功能。

this.sub = this.route.params.subscribe(params => {
this.id = params['id'];
this._someService
      .thisById(this.id)
      .subscribe(value => {
         this.valueObj = value; 
     });
});

这看起来没问题。除了我需要使用this.valueObj在订阅函数之外的以下函数中。

private  _checkOpeningHours(data: any): string {
    const curDayName = this._getDayName();
    const todaysOpeningData = ***this.valueObj***.openHours[curDayName];

    if (!todaysOpeningData) return "ERROR!";
    if (!todaysOpeningData.status) return `IT'S ${curDayName.toUpperCase()} - WE ARE CLOSED TODAY!`;

    return `IT'S ${curDayName.toUpperCase()}, ${new Date().toLocaleString("en-US", { hour: '2-digit', minute: '2-digit' })} - ${this._isOpen(todaysOpeningData) ? 'WE ARE OPEN' : 'SORRY, WE ARE CLOSED'}!`;

  }

  private _refresh() {
    this.opening = this._checkOpeningHours(***this.valueObj***.openHours[this._getDayName()]);

    setTimeout(() => this._refresh(), 60 * 1000);
  }

我怎样才能让这些功能与this.valueObj?


异步调用需要正确链接。

如果你返回一个可观察的(需要map代替subscribe)

someMethod() {
  this.sub = this.route.params.subscribe(params => {
  this.id = params['id'];
  return this._someService
      .thisById(this.id)
      .map(value => {
         return this.valueObj = value; 
     });
  });
}

那么你可以像这样使用它

private  _checkOpeningHours(data: any): string {
  this.someMethod().subscribe(val => {
    console.log(val); // here the value is available
  });
}

如果没有正确的链接,很可能_checkOpeningHours()访问this.valueObj在该值变得可用之前很长时间。

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

如何在打字稿订阅功能之外获取价值 的相关文章

  • Mat-自动完成表单控件名称

    我在 Mat Autocomplete 上使用 formControlName 时遇到问题 我不知道为什么 但我的 formControlName 不会发送数据 我是否写错了 当我尝试从 HTML 中删除 formControl 时 它总是
  • 此版本的 CLI 仅与 Angular 版本 5.0.0 或更高版本兼容错误

    我已经有 Angular 项目在 4 版本中运行 在安装新项目时 不幸的是我安装了 6 版本的 Angular cli 在以 4 版本运行的旧项目中运行 ngserve 命令时 这会引发错误 您的全局 Angular CLI 版本大于本地版
  • VS Code 扩展 - 获取完整路径

    我正在为 VS Code 编写一个插件 我需要知道调用扩展的文件的路径 无论是从编辑器上下文菜单或资源管理器上下文菜单调用还是用户只需键入扩展命令 function activate context get full path of the
  • 如何对使用 router.paramMap 的 Angular 4 组件进行单元测试

    我是 Angular 4 的新手 并尝试从单元测试中测试 Angular 4 功能 router paramMap 之一 以以下方式读取路由参数并在我的应用程序中按预期工作 constructor private router Router
  • AWS CDK CodePipeline 在源代码和构建之间添加一个阶段

    我跟着使用 CDK Pipelines 持续集成和交付 CI CD https docs aws amazon com cdk v2 guide cdk pipeline html实施 CodePipeline 的指南 我想知道如何在 CD
  • 可从数组观察

    我目前对 Angular2 和 Observable 对象有疑问 我有一个调用服务的组件 一个链接到 api 的真实组件和一个假组件 链接到 API 的服务运行良好 但当我使用假的服务时 我想从 Observable 对象返回一个数组 但出
  • 运行 npm test 后无法读取未定义的属性“订阅”(Angular 2 单元测试)

    我已经为我正在测试的组件创建了一个测试 规范 文件 但是当我运行测试时 它给了我一个错误 Cannot read property subscribe of undefined TypeError Cannot read property
  • 关注新添加的输入元素

    我有一个新的 Angular 2 应用程序 其中包含以下列表input盒子 当用户按下返回键时 我添加一个新的input紧接着他们当前正在编辑的框后面的框 或者更确切地说 我 异步 向模型中的数组添加一个新条目 这会导致 Angular 2
  • 如何使用 Visual Studio 2017 在 Azure 上部署 Angular 6 应用程序

    我使用 angular cli 创建了一个 Angular 应用程序 npm install g angular cli ng new my app 现在我想将这个简单的 Angular 应用程序部署到 Azure 我已经发布了设置 我该怎
  • Karma + JSPM + Typescript - 未找到“.ts.js”

    主要只是想让 Karma JSPM 在加载 ts 文件时发挥良好作用 但绝对没有运气 我看到一个讨论库 https github com Larchy karma jspm typescript coverage tree master一个
  • Angular2,测试和解析数据:如何测试 ngOnInit?

    我正在通过Angular2 测试指南 https angular io docs ts latest guide testing html并希望编写一个测试ngOnInit 功能 那个来自编程指南的路由部分 https angular io
  • 在 Angular 6 中添加 Xsrf-Token 时出现问题

    通过 API 提交的表单中的数据已成功发布 但是将 X CSRF TOKEN 添加到标头并设置后withCredentials true结果数据未发布到名为的脚本insert php Error 加载失败http localhost sim
  • 如何以编程方式切换 Angular 材质扩展面板

    我刚刚开始从事 Angular 4 项目的材料设计工作 我目前正在研究扩展组件 API 规定 https material angular io components expansion overview that 用户无法切换禁用的扩展面
  • 指定枚举类型

    有枚举 enum Foo Bar should cause type error Baz Baz 可以为其指定类型以使其成为仅字符串枚举吗 如果您愿意 您可以执行以下操作 创建一个函数 要求其输入只有string 有价值的属性 const
  • 如何使用语言服务器协议将 TS 解析为符号?

    我是这个主题的新手 所以我很可能弄错了一些关键术语 我想将打字稿文件解析为其组件符号 举一个我想象的非常粗略的例子 请参见下文 some ts file export function yell output string alert ou
  • 未推断扩展接口的通用类型

    在下面的示例中 Typescript 可以推断出类型T在方法中foo从传递给它的参数bar 但它并没有推断出类型R 感觉应该如此 因为它知道类型T还有那个T extends I
  • 使用 @Input() 时出现 TypeScript 错误

    我正在尝试使用 Angular 4 开发一个应用程序 但是我在使用时收到一条错误消息 Input inputProducts products Product 错误是 tslint 在 ProductListComponent 类中 指令输
  • 将模板添加为innerHTML 时,Angular 2 绑定/事件不起作用

    我正在尝试创建一个可配置的可重用表 单元格可以配置为具有 html 模板 我正在配置列 Review 拥有带有带有点击事件的锚标记的 html 模板 审核 行 到目前为止 我尝试将此模板作为innerHTML 插入 但所有角度绑定都不起作用
  • 使用 XLSX.readFile 读取文件

    在 Typescript 中 执行时出现错误 无法读取未定义的属性 替换 const xlsx XLSX readFile fileName filename 是现有文件的路径 我读过 readFile https docs sheetjs
  • 为什么 TypeScript 中默认导出接口有限制?

    我正在使用 TypeScript 1 5 beta 并且尝试将接口导出为默认导出 以下代码会在 Visual Studio 和 WebStorm 中导致错误 export default interface Foo 但是 下面的代码可以正常

随机推荐

  • 初始化父类时如何返回子类的新实例?

    给定一个类层次结构如下 class A def initialize param if param 1 then initialize and return instance of B else initialize and return
  • C# Elasticsearch NEST 无法转换 lambda 表达式

    我遇到了与此处描述的完全相同的问题 但未得到解答 ElasticSearch NEST 搜索 https stackoverflow com questions 24615676 elasticsearch nest search I us
  • 需要.Net 的公式解释器[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 当我们回来时,查看寻呼机片段状态寻呼机适配器出现白屏?

    我已经使用 FragmentStatePagerAdapter 使用视图分页器来加载片段 当我第一次来时 它会工作 但如果我从寻呼机适配器重定向到其他片段并返回 它将显示空白屏幕 fragment community xml
  • 如何获取默认的iOS浏览器名称?

    Stack Overflow 应用程序检测到我越狱设置的默认浏览器 Chrome 的名称 我怎样才能在 Objective C 和 Swift 中实现同样的目标 只是名称 不是 ActivityView 代码 Example Update
  • 登录 python + mod_wsgi 应用程序

    我在 apache 服务器上部署了一个 python Flask 应用程序 这是我的abc conf file WSGIDaemonProcess voting app threads 5 WSGIScriptAlias election
  • 为什么 new()/delete() 比 malloc()/free() 慢?

    为什么new delete 比malloc free 慢 EDIT 感谢到目前为止的回答 如果您有new 和delete 的标准C 实现规范 请指出 谢谢 看一下这段C代码 struct data pd malloc sizeof stru
  • PostgreSQL 9.3 触发器函数插入带有参数化名称的表

    我正在尝试在 Postgres 中动态分区日志条目 我有 53 个子表 1 个代表每周的日志条目 并且希望使用触发器将 INSERT 路由到子表 我运行该函数INSERT INTO log5 VALUES NEW 并且它有效 我用以下命令运
  • 在 IISNode 上运行的 Azure Node.js 应用程序中未定义端口

    我有一个使用 IISNode 运行 Node js 应用程序的 Azure 应用服务 问题是process env PORT未定义 我读过 IISNode 使用一个叫做命名管道并且端口信息可能不容易读取 但就我而言 我只是未定义 我尝试部署
  • HK2 MethodInterceptor 与 Jersey 资源

    如何设置aopMethodInterceptor使用泽西岛资源 这是我尝试过的 如下this https hk2 java net 2 2 0 aop example html文档 第 1 步 拦截服务 public class MyInt
  • Linux 的 gcc __attribute__((selectany)) 替代方案?

    我想知道是否有替代方案 attribute selectany 在Linux中 我想定义这样的东西 char a qwe zxc 并将其包含在许多链接在一起的 c 文件中 因此链接器将看到 a 的多个定义 因此不会链接 我读过这个属性 se
  • 更改 WooCommerce 购物车和结帐页面中的“运输”文本:[重复]

    这个问题在这里已经有答案了 我正在将 WooCommerce 与 Storefront 主题一起使用 并且我正在尝试更改这个词 船运 在带有总计的购物篮页面上 我在这里找到了一些建议 https kriesi at support topi
  • iOS后台Location不发送http请求

    我的应用程序需要在后台跟踪用户位置 但无法发送 获取 请求 当应用程序到达前台时 http 请求会立即发送 我正在使用 RestKit 来处理所有网络请求 并且遵循本教程 http www mindsizzlers com 2011 07
  • Google Cloud Platform:将上传的 MP4 文件转换为 HLS 文件

    我正在构建一个平台 允许用户将一些视频文件 20 40 秒 从手机上传到服务器 所有这些上传目前都运行良好 文件通过nodejs云功能存储在谷歌存储桶中 现在我想创建一个 gcp 转码器作业 它将上传的 mp4 视频文件转换为 hls 视频
  • 在 ASP.NET MVC3 中,应该如何呈现由多个模型支持的多个 PartialView?

    在 MVC3 Razor 中 如何创建具有多个表单的页面 以便每个表单都是使用自己的模型渲染的部分视图 我们一直在尝试各种形式的调用 Html RenderPartial 传入部分视图名称以及我们通过 ViewBag 访问的模型实例 但我们
  • VBA添加图表标题

    我只想使用 vba 将图表标题添加到我的图表中 我实际上想对每张纸中的每个图表递归地执行此操作 但我什至无法让 1 个图表工作 这是我的代码 Dim chnam chnam Left ActiveSheet Name Len ActiveS
  • 多维数组上的数组合并

    要么我是瞎子 要么我在任何地方都找不到这个问题 昨天我在合并数组时遇到了问题 我可以在 SO 的帮助下解决这个问题 今天 我再次遇到了合并数组的问题 但这一次是多维数组 我有一个数组 usergroup groups 和一个数组 userg
  • 在特定时间启动应用程序

    我想知道是否有可能 以及如何 在特定时间启动我的应用程序 就像在特定时间响起的闹钟一样 假设我希望我的应用程序在早上 8 点启动 这可行吗 您可以使用 AlarmManager 来完成此操作 这是一个简短的示例 首先你需要设置闹钟 Alar
  • SSL 到底如何工作?

    SSL 是如何工作的 证书安装在客户端 或浏览器 和服务器 或Web服务器 的哪里 当您在浏览器中输入 URL 并从服务器获取页面时 信任 加密 身份验证过程如何启动 HTTPS协议如何识别证书 当证书负责所有信任 加密 身份验证工作时 为
  • 如何在打字稿订阅功能之外获取价值

    我对某些服务有以下订阅功能 this sub this route params subscribe params gt this id params id this someService thisById this id subscri