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
相关产品推荐
相关产品推荐

