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

Angular10中点击Save按钮后在同页展示Reactive Form数据

实现Angular 10响应式表单的本地保存与展示

1. 组件类逻辑实现

在组件中定义响应式表单实例,声明变量存储已保存数据,再分别实现Save和Submit的处理函数:

import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-your-form',
  templateUrl: './your-form.component.html',
  styleUrls: ['./your-form.component.css']
})
export class YourFormComponent implements OnInit {
  userForm: FormGroup;
  savedFormData: any;

  constructor(private fb: FormBuilder, private http: HttpClient) { }

  ngOnInit(): void {
    // 根据实际业务字段初始化表单
    this.userForm = this.fb.group({
      name: ['', Validators.required],
      email: ['', [Validators.required, Validators.email]],
      phone: ['']
    });
  }

  // Save按钮点击事件:将表单数据存入本地变量
  onSave(): void {
    if (this.userForm.valid) {
      // 用扩展运算符复制表单值,避免直接引用导致后续变更同步
      this.savedFormData = { ...this.userForm.value };
    }
  }

  // Submit按钮点击事件:调用API提交数据
  onSubmit(): void {
    if (this.userForm.valid) {
      // 替换为你的实际API接口地址
      this.http.post('https://your-api-domain.com/submit', this.userForm.value)
        .subscribe({
          next: (res) => {
            console.log('提交成功', res);
            // 可按需添加提交后的逻辑,比如重置表单
            // this.userForm.reset();
          },
          error: (err) => {
            console.error('提交失败', err);
          }
        });
    }
  }
}

2. 模板文件实现

构建表单并绑定点击事件,添加已保存数据的展示区块:

<!-- 表单区域 -->
<form [formGroup]="userForm">
  <div>
    <label>姓名:</label>
    <input formControlName="name" type="text">
  </div>
  <div>
    <label>邮箱:</label>
    <input formControlName="email" type="email">
  </div>
  <div>
    <label>电话:</label>
    <input formControlName="phone" type="tel">
  </div>

  <button type="button" (click)="onSave()">Save</button>
  <button type="button" (click)="onSubmit()">Submit</button>
</form>

<!-- 已保存数据展示区块 -->
<div *ngIf="savedFormData" class="saved-data-container">
  <h3>已保存的表单数据</h3>
  <p><strong>姓名:</strong> {{ savedFormData.name }}</p>
  <p><strong>邮箱:</strong> {{ savedFormData.email }}</p>
  <p><strong>电话:</strong> {{ savedFormData.phone || '未填写' }}</p>
</div>

3. 必要模块导入

确保在对应模块中导入响应式表单和HTTP模块:

import { NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { YourFormComponent } from './your-form.component';

@NgModule({
  declarations: [YourFormComponent],
  imports: [ReactiveFormsModule, HttpClientModule]
})
export class YourModule { }

额外优化(可选)

如果需要刷新页面后保留已保存数据,可以结合localStorage:

// 修改onSave函数
onSave(): void {
  if (this.userForm.valid) {
    this.savedFormData = { ...this.userForm.value };
    localStorage.setItem('savedFormData', JSON.stringify(this.savedFormData));
  }
}

// 在ngOnInit中读取本地存储的数据
ngOnInit(): void {
  // 初始化表单...
  const savedData = localStorage.getItem('savedFormData');
  if (savedData) {
    this.savedFormData = JSON.parse(savedData);
    // 可选:将保存的数据回填到表单
    // this.userForm.patchValue(this.savedFormData);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 17:47:22