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

如何根据条件添加与更新记录?Angular代码错误修正

解决Id为0时插入、非0时更新的条件判断问题

你的核心问题是onSubmit方法里的条件判断逻辑错误,错误地将API调用和Id判断混在了一起,同时获取Form控件值的方式也不对。

错误分析

原代码中的if(this.service.post(this.orderForm.Id == 0))存在两个问题:

  • 不该在这里直接调用service.post(),条件判断只需要做Id值的校验,API调用应该放在insert()或update()方法里
  • 获取Form中Id的值方式错误,orderForm是FormGroup实例,不能直接用orderForm.Id获取控件值,需要通过orderForm.value.Id或者orderForm.get('Id')?.value来获取

修正后的代码

修改component.ts中的onSubmit方法即可:

onSubmit(orderForm: FormGroup) {
  this.submitted = true;
  if(this.orderForm.valid){
    // 获取表单中的Id值
    const userId = this.orderForm.value.Id;
    // 判断Id是否为0,决定执行插入还是更新
    if(userId === 0){
      this.insert();
    } else {
      this.update();
    }
  }    
}

可选优化(更严谨的控件值获取)

如果需要更严谨地获取FormControl的值,可以用get方法并做空值判断:

onSubmit(orderForm: FormGroup) {
  this.submitted = true;
  if(this.orderForm.valid){
    const idControl = this.orderForm.get('Id');
    if(idControl?.value === 0){
      this.insert();
    } else {
      this.update();
    }
  }    
}

这样就能正确实现Id等于0时插入新记录,Id不等于0时更新记录的需求了。

内容的提问来源于stack exchange,提问作者Milie24

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 19:01:00