You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 16数据库返回值无法正确赋值给文档编号属性问题

解决Angular异步请求导致文档编号滞后的问题

问题根源

HTTP请求是异步操作,find_number_doc里的subscribe回调要等服务器返回结果才会执行。你在onClick中先调用find_number_doc,紧接着就执行this.document.download(this.doc)——这时候请求还没完成,doc.doc_number还是旧值(第一次是初始的0,第二次是上次请求的29),所以出现编号始终滞后一次的问题。

修正方案

1. 改造find_number_doc方法

让它直接返回Observable,把订阅逻辑放到onClick里,便于控制异步时序:

find_number_doc(year: number): Observable<number> {
  return this.service.number_doc(year);
}

2. 调整onClick的执行顺序

等请求完成、编号赋值后再执行下载操作:

onClick() {
  // ...保留你的其他逻辑
  this.find_number_doc(this.year).subscribe((res: number) => {
    this.doc.doc_number = res; // 注意:你之前代码里写的this.doc_number应该是this.doc.doc_number
    this.document.download(this.doc); // 赋值完成后再触发下载
  });
}

3. 修复ngOnInit的语法错误

你之前的this.doc.doc_year = new Date(), 'yyyy';是语法错误,改成正确的赋值方式:

ngOnInit() {
  this.year = formatDate(new Date(), 'yyyy');
  this.doc.doc_data = formatDate(new Date(), 'dd/MM/yyyy');
  this.doc.doc_year = +this.year; // 转成数字类型,和模型定义匹配
}

内容的提问来源于stack exchange,提问作者Jose Simão

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 09:24:58