首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用angular根据页面上呈现的表单组件是否有效来限制浏览器刷新

如何使用angular根据页面上呈现的表单组件是否有效来限制浏览器刷新
EN

Stack Overflow用户
提问于 2017-07-19 18:36:11
回答 1查看 81关注 0票数 0

我正在尝试建立一个通用的服务,将限制用户刷新页面,如果有任何无效的表单在刷新时出现在页面上。也就是说,如果表单有效,允许用户刷新页面,否则不允许(或密切关注用户数据丢失)。

我尝试在我的服务中注册window.onbeforeload事件,但是没有关于表单组件的信息。

EN

回答 1

Stack Overflow用户

发布于 2017-07-19 21:04:12

我想你可能想看看反应式的形式,也许像Cookies ..如果用户可以禁用cookie并将其清除。但是有了cookies,你就可以来回导航了。如果表单有效,则保存到cookie。

以下是帮助您入门的路线图:

代码语言:javascript
运行
复制
npm install cookies-js

app-module.ts

代码语言:javascript
运行
复制
import {ReactiveFormsModule} from '@angular/forms';

...
@NgModule({

imports: [
ReactiveFormsModule
]
})

my-component.html

代码语言:javascript
运行
复制
 <form [formGroup]="form">
    <input name="a" formControlName="xxx">
  </form>

my-component.ts

代码语言:javascript
运行
复制
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();
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45188006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档