Angular6 ngModelChange 中的去抖时间

2023-11-26

我有一个用 Angular6 编写的复杂计算器应用程序,它根据 ngModelChange 事件中的多个输入计算结果,并直接在图表中显示这些结果。计算是在服务器端完成的。现在我想添加一个防抖时间,这样服务器就不会在按下每个键时收到请求。

我在 ngModelChange 中触发的计算方法如下所示:

async calculate(){
 if(this.checkInputs()){
   try{
     let returnDto = await this.webApiService.calculate(new CalculatorInputDto(this.model)).toPromise();
     this.outputCalculate.emit(returnDto);
   }
   catch(e){
     console.log(e);
   }
}

还有我的服务方法:

calculate(dto: CalculatorInputDto): Observable<any> {
 let url = this.baseUrl + "calculate";
 return this.http.post(url, JSON.stringify(dto), this.options)
    .pipe(
        debounceTime(5000),
        map((res => res.json())),
        catchError(error => this.handleError(error))
     );
}

正如你所看到的,我已经在我的服务中尝试了 debounceTime(5000),但似乎没有任何改变。

有谁知道我该如何解决这个问题?


你总是可以使用来实现这个Subjects像下面这样:

声明一个主题:

customInput : Subject<string> = new Subject();

在你的模板中:

(ngModelChange)='inputValueChanged($event)'

现在听一下这个事件:

  inputValueChanged(event){
      this.customInput.next(event);
  }

您必须通过以下方式订阅您的主题:

this.customInput.debounceTime(300).distinctUntilChanged().subscribe(value =>{
       //value will have your input
    });

(这样你的代码就会看起来整洁、干净并且组织有序)

编辑:使用 rxjs >= v6 ,

完整的例子可以找到here

import { Subject } from 'rxjs';
import { debounceTime, distinctUntilChanged} from 'rxjs/operators';


this.customInput.pipe(debounceTime(300),distinctUntilChanged()).subscribe(value =>{
 //value will have your input
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular6 ngModelChange 中的去抖时间 的相关文章

  • 如何在项目中全局声明类型(typescript)

    在打字稿项目中 有没有办法声明一个类型并在所有文件之间共享它 就像我们可以访问全局定义的类型一样node d ts 例如 假设在我的项目中IUser是诸如 interface IUser name string mail string 好的
  • 如何使用RxJsdistinctUntilChanged?

    我正在开始使用 RxJs 使用 v5 beta 但不知何故我不知道如何使用distinctUntilChanged 如果我在 babel node 中运行下面的代码 其输出是 a 1 key a state 1 Next value 42
  • Angular 5 材质小吃栏

    我遇到的问题是 小吃栏组件在初始化时附加在 cdk global overlay wrapper 外部 位于 cdk overlay container 内 这使得它在屏幕中间瞬间可见 然后它消失并重新附加到 cdk global over
  • 角度单元格 xlsx 着色

    我有一个问题 我想根据一个值在我的 exel 行中添加红色或绿色来下载 如何在工作表中设置指定单元格的颜色 这是处理 exel 格式的 ts 类 表达 import Injectable from angular core import a
  • Angular:绑定到 @Input 别名

    我正在尝试在以下指令中设置输入别名example https angular io guide attribute directives bind to an input alias Input appAvatarColor name st
  • Swiper 8 和笑话

    Swiper 8和Jest 支持ESM 必须使用import来加载ES模块在此输入图像描述 https i stack imgur com e3bB4 png 在此输入图像描述 https i stack imgur com nUmhq p
  • Angular2模板参考变量和动态更新

    我最初试图在 Angular2 中设置一个模板引用变量 这样我就可以反转表的排序顺序 而不必进行绑定 但当我单击复选框时 我没有得到界面的动态更新 我创建了一个简单的 plunker 以防应用程序中的其他内容可能会扰乱代码 并且我看不到正在
  • 在运行时分配 Angular 结构指令

    我试图在运行时将 ngIf 指令从角度代码分配给模板 无法找到一种方法来做到这一点 view templateref 是一种选择吗 还是有一种不同的方法和更简单的方法 首先有可能吗 Update 代码有点乱 所以避免了 但这是 DOM 代码
  • 如何使用接口获取对象的子集?

    假设我有这个类和接口 class User name string age number isAdmin boolean interface IUser name string age number 然后我从某处获取这个 json 对象 c
  • Angular2 - 如何最好地处理过期的身份验证令牌?

    我正在使用 Angular 2 1 2 我有一个身份验证令牌 使用 angular2 jwt 如果它过期 我的 webApi 调用就会失败并出现 401 错误 我正在寻找一种用户不会丢失任何输入数据的解决方案 我可以捕捉到这个 401 并通
  • 系统js语法错误,IE11

    我有一个 Angular 2 应用程序可以在 Firefox 和 Chrome 中工作 但在 IE 中却没有那么多工作 根据我的堆栈跟踪 我的 System js 设置似乎存在问题 这是我在网络控制台中看到的错误描述 Error Syste
  • NgRx 更新对象数组中对象的属性

    我的商店里目前有一系列物品 我想在给定传入对象的情况下更新该对象的单个属性 State export interface ApplicationState allNavGroups INavGroup null Reducer on App
  • 在 Angular2 中使用 ngFor 进行多重嵌入

    我对 angular2 还很陌生 我正在尝试制作一个名为 的小角度组件 grid 它只是使用嵌入来重新排列其内容 它的模板 网格组件模板 grid component ts div class grid div class row div
  • 未处理的 Promise 拒绝:push.on 不是函数

    我正在使用离子2 我得到这个打字稿error当尝试设置推送通知时 我从教程中复制了此示例代码 因此预计它可以工作 我一定有什么问题 任何想法请 Unhandled Promise rejection push on is not a fun
  • 检查标记坐标是否在边界内

    我在用着leafletAngular 6 应用程序中的地图 我获取每个项目的位置信息为 lat xx lng xx 我还得到了边界对象 它描述了地图当前可见的区域 它随着拖动和缩放而变化 边界对象如下所示 northEast lat 76
  • 使用Rxjs映射函数时如何保留对象属性大小写

    我是 Angular2 的新手 正在使用 http 服务从 asp net mvc webapi 获取数据 API返回的数据格式如下所示 RequestResponse public string Message get set publi
  • 在 *ngFor 中创建局部变量

    是否可以在 ngFor 中创建局部变量 例如 div 您可以将 ng container 与 ngIf 结合使用来实现此目的 div class message list div div
  • Azure 和 NX,运行管道时出错:npm:另一个进程(ID 为 4224)当前正在运行 ngcc

    我正在尝试使用 Azure 运行管道 在构建时失败并出现以下错误 当我运行nx affected target build base origin master prod parallel本地命令 我也有Another process 消息
  • 在特定路线中添加类 - Angular 2

    当我在某条路线上时 我正在尝试添加课程 代码在我的 AppComponent 中 我使用 ngClass Component selector my app template a Some html code 然后我在同一个 app com
  • 在 Angular 6 和 ASP.net 中启用 CORS

    我正在尝试从 Angular 6 应用程序向发送电子邮件的 API 发送 POST 请求 我用邮递员测试了该请求并且它有效 但是当我在 Angular 应用程序中执行 POST 请求时 我的控制台中出现错误 我在 Angular 应用程序中

随机推荐

  • 加快 Vagrant 上主机和来宾之间的同步延迟(NFS 同步文件夹)

    我正在使用 vagrant 在本地计算机上运行 wordpress 开发环境 并将 nfs 设置为默认文件共享机制 我在 Mac 上 总体性能非常好 除了一件事 同步延迟 我已经在来宾上设置了 grunt 观察程序来重新编译 css jav
  • UTF-8 编码与 Base-64 编码

    我想对一个文件 可能是图像或任何 pdf 进行编码并将其发送到服务器 我必须遵循哪种类型的编码和解码 服务端和客户端都在我们公司 我们可以在两个地方写逻辑 UTF 8 编码java默认支持 并使用Base 64编码我必须导入外部jar 对于
  • Jupyter 笔记本中的自动完成功能不起作用

    安装Anaconda最新版本后 我尝试了以下步骤 我无法让自动完成功能正常工作 关于我还需要尝试什么的任何建议 步骤1 1 pip安装jupyter contrib nbextensions 2 pip安装jupyter nbextensi
  • 忽略 ASP .NET MVC 中的文件夹

    我有一个现有的 ASP NET MVC 应用程序 我想忽略其中的特定文件夹 我打算在其中放置 PHP 脚本 我尝试按照描述添加忽略路由here但它不起作用 因为我仍然收到标准 ASP NET 配置错误 例如 假设我有这个文件夹结构 root
  • 如何使用 Async/Await 快速进行进度报告?

    我有一个需要 2 个回调的函数 我想将其转换为异步 等待 但我怎样才能在等待的同时不断返回进度呢 我在用https github com yannickl AwaitKit摆脱回调 typealias GetResultCallBack S
  • 使用 GROUP BY 和 Count(*) 进行匿名类型的 LINQ 查询

    我尝试使用 LINQ 查询来确定我拥有的每种特定对象类型的数量 并将这些值记录到匿名类型中 假设我有一些看起来像这样的数据 确实有暴露此属性的对象 但它的工作原理相同 GroupId 1 1 2 2 2 3 我知道如何在 SQL 中格式化我
  • 使用 JeMalloc 查找 Java 应用程序中的本机内存泄漏

    目前我正在尝试解决 Java 内存问题 我的 Java 应用程序不断使用越来越多的内存 最终它被 Linux OOM 杀手杀死 很可能是本地内存泄漏 因为经过检查 使用 VisualVM 的 JVM 的元空间和堆看起来都不错 使用top命令
  • 一台服务器上的多个 Zend 框架站点

    我在设置 httpd conf 或 htaccess 文件以识别一台服务器上的多个 zend 框架站点时遇到问题 对于开发 我只有一台服务器 我正在尝试设置站点 以便我可以访问它们 例如 localhost app1 localhost a
  • python pdb lambda函数全局名称错误

    我正在使用测试修复pdb set trace 在实施之前确保它按照我预期的方式工作 并不断出现奇怪的错误 Pdb test 1 2 3 4 4 3 2 1 Pdb max range len test key lambda i test i
  • 内容解析器返回错误的大小

    我正在从图库中选择一张图像并通过以下方式查询其大小ContentResolverAPI 它返回29kb 但是 当我使用 adb 检查文件时ls al它是 44kb 这是我查询图像大小的方法 private fun getFileInfo c
  • 我们如何在 iOS 应用程序中使用自定义字体? [复制]

    这个问题在这里已经有答案了 可能的重复 我可以在 iPhone 应用程序中嵌入自定义字体吗 如何在 iPhone 应用程序中自定义字体 是否可以 我怎样才能在a中使用这个自定义字体UILabel 我正在尝试添加MYRIADPRO SEMIB
  • 如何使用 OkHttp 设置连接超时

    我正在使用 OkHttp 库开发应用程序 我的麻烦是我找不到如何设置连接超时和套接字超时 OkHttpClient client new OkHttpClient Request request new Request Builder ur
  • Android房间数据库不会导出所有数据

    我正在尝试设置 Room 数据库备份功能 问题是 下载后 sql 数据库文件不包含应用程序中的最新数据集 它总是会错过一些最近的记录 有没有导出房间数据库的正确方法 附 在使用 sqliteHelper 处理我的数据库时 我没有遇到类似的问
  • Delphi XE2后台IDE编译器找不到源路径

    我刚刚购买了 XE2 版本 安装了更新 1 ISO 并制作了我的开源项目用它来编译 In fact 我将库的源代码路径添加到常规设置IDE中 适用于我使用的所有平台 即到目前为止的Windows 32位和64位 我编译了TestSQLite
  • 如何将 Python 3.5 设置为 MacOS 上的默认版本?

    我刚刚在 Mac 上安装了 Python 3 5 1 运行最新版本的 OSX 我的系统安装了 Python 2 7 当我打字时IDLE在终端提示符下 我的系统会启动原始的 Python 2 7 而不是新安装的 Python 3 5 当我从终
  • Parameter.As String 在 Oracle/SQL 下失败 - Parameter.Value 2 字节字符在 Oracle 下

    更改为 FireDAC 后 我无法让此代码在 MSSQL Oracle 上运行 with DataFormsettings do begin Close if Params Count 0 then FetchParams Params P
  • 原因:(noSuchName) 此 MIB 中没有这样的变量名称

    我使用的是centos操作系统 我正在尝试通过以下方式获取本地主机的内存统计信息snmpget命令 我收到此错误 snmpget v 1 c public localhost 1 3 6 1 4 1 2021 4 6 Error in pa
  • Node.js 应该监听哪些端口?如何以及为何?

    我的 Node js 应用程序在端口 80 上监听 http 在端口 443 上监听 https 我认为这是相当标准的做法 然而 我最近读到的一些例子使用其他端口 例如8080和8081 来监听http https 然后使用其他方式 例如i
  • Android - 无法以编程方式删除 Wifi 网络 - WifiManager 类型中的方法 removeNetwork(int) 不适用于参数(字符串)

    我正在尝试以编程方式删除我的 wifi 网络 但是我似乎无法让它删除 忘记当前连接的 wifi 连接 这应该是一个非常简单的任务 所以我不确定我到底做错了什么 我使用以下 StackOverflow 帖子作为示例 如何以编程方式忘记andr
  • Angular6 ngModelChange 中的去抖时间

    我有一个用 Angular6 编写的复杂计算器应用程序 它根据 ngModelChange 事件中的多个输入计算结果 并直接在图表中显示这些结果 计算是在服务器端完成的 现在我想添加一个防抖时间 这样服务器就不会在按下每个键时收到请求 我在