我正在尝试建立一个通用的服务,将限制用户刷新页面,如果有任何无效的表单在刷新时出现在页面上。也就是说,如果表单有效,允许用户刷新页面,否则不允许(或密切关注用户数据丢失)。
我尝试在我的服务中注册window.onbeforeload事件,但是没有关于表单组件的信息。
发布于 2017-07-19 21:04:12
我想你可能想看看反应式的形式,也许像Cookies ..如果用户可以禁用cookie并将其清除。但是有了cookies,你就可以来回导航了。如果表单有效,则保存到cookie。
以下是帮助您入门的路线图:
npm install cookies-jsapp-module.ts
import {ReactiveFormsModule} from '@angular/forms';
...
@NgModule({
imports: [
ReactiveFormsModule
]
})my-component.html
<form [formGroup]="form">
<input name="a" formControlName="xxx">
</form>my-component.ts
import {Component,OnInit} from '@angular/core';
import {FormGroup, FormBuilder, Validators} from '@angular/forms"
import * as Cookies from 'cookies-js';
export class MyComponent implements OnInit {
form : FormGroup;
private static readonly COOKIE_STORE = 'my-component-cookie';
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
xxx:['' Validators.required]
});
}
ngOnInit() {
const formData = Cookies.get(MyComponent.COOKIE_STORE);
if (formData) {
this.form.setValue(
JSON.parse(formData)
);
}
this.form.valueChanges
.filter(() => this.form.valid)
.do(validFormData =>
Cookies.set(MyComponent.COOKIE_STORE,
JSON.stringify(validFormData)
)
)
.subscribe();
}
}https://stackoverflow.com/questions/45188006
复制相似问题