angular - 如果用户刷新/重新加载,请保留表单数据
问题描述
我有如下验证的表单,如下所示
<form [formGroup]="LoginForm">
First name:<br>
<input type="text" formControlName="firstname" >
<br>
Last name:<br>
<input type="text" formControlName="lastname">
<button type="submit" [disabled]="!this.LoginForm.valid"></button>
</form>
组件.ts
LoginForm: FormGroup;
onloginUser() {
this.LoginForm = this.form.group({
firstname: ['', Validators.required],
lastname: ['', Validators.required],
})
}
我有一个本地存储服务,所以我尝试如下,
this.storage.set("user_data",this.LoginForm.value);
this.storage.get("user_data");
在这里,当我用户重新加载页面或返回/前进时,我的问题应该存在于输入字段中。但上面的代码并没有发生
我试过的链接在stackoverflow 链接中得到了回答,但没有一个答案对我有帮助。所以任何人都可以给出更好的答案,这对我有帮助
解决方案
这是我这个问题的 TS 文件
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
@Component({
selector: 'app-reload',
templateUrl: './reload.component.html',
styleUrls: ['./reload.component.css']
})
export class ReloadComponent {
LoginForm: FormGroup;
constructor(private FB: FormBuilder ) {
// 1 - Get the values from local storage
const value = JSON.parse(localStorage.getItem('formValue')!);
// 2 - Create the form with the values
this.LoginForm = FB.group({
firstname: [value && value.firstname || '', Validators.required],
lastname: [value && value.lastname || '', Validators.required]
});
// 3 - Update local storage on every modification
this.LoginForm.valueChanges.subscribe(value => {
localStorage.setItem('formValue', JSON.stringify(this.LoginForm.value));
});
}
}
推荐阅读
- jmeter - 无法在 Jmeter 响应中获取页面的所有内容
- javascript - 如何在 React 包装器组件中访问子节点的 DOMNodes/refs?
- php - 发送到多个数据库输入类型 = "radio"
- javascript - 带有箭头功能的 OnClick 重新渲染 React
- openstreetmap - 使用 Osmosis 从 PostGIS 或直接从较大的 .osm 文件生成较小的 .osm 文件会更快吗?
- javascript - 自动点击超链接
- excel - Excel:如果单元格值增加 -> 播放声音
- sql - 用新产品值替换所有旧产品值的 SQL 逻辑
- javascript - 如何使用jquery检查是否有任何一个值不等于并停止在每个函数中调用函数?
- matlab - 在matlab中创建正弦波