Angular 7 - 嵌套表单的触碰标志干扰父表单按钮点击
创始人
2024-10-16 15:00:55
0

在Angular 7中,可以使用FormGroup和FormControl来创建嵌套表单。当一个嵌套表单被触碰(即,当用户与其交互并修改了任何控件的值)时,它将会被标记为"dirty"。当用户点击父表单的按钮时,如果嵌套表单的任何控件被触碰过,则父表单的按钮应该被禁用。

下面是一个解决这个问题的示例代码:

在父组件中,创建一个FormGroup对象,并在其中包含一个FormControl对象来表示按钮的状态:

import { Component } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-parent-form',
  template: `
    

Parent Form

` }) export class ParentFormComponent { parentForm: FormGroup; constructor() { this.parentForm = new FormGroup({ name: new FormControl('') }); } }

在子组件中,接收父组件传递的FormGroup对象,并监听它的valueChanges事件。当嵌套表单被触碰时,将设置一个触碰标志(例如,isTouched):

import { Component, Input } from '@angular/core';
import { FormGroup } from '@angular/forms';

@Component({
  selector: 'app-child-form',
  template: `
    

Child Form

` }) export class ChildFormComponent { @Input() parentForm: FormGroup; get childForm() { return this.parentForm.get('childForm'); } ngOnInit() { // 监听valueChanges事件 this.childForm.valueChanges.subscribe(() => { // 设置触碰标志 this.childForm.markAsTouched(); }); } }

在上述示例代码中,当子表单的任何控件的值发生变化时,订阅了valueChanges事件,并在回调函数中设置了触碰标志。然后,通过在父组件的按钮上绑定[disabled]属性,根据父表单的valid属性和子表单的触碰标志来禁用按钮。

请确保在模块中正确导入和声明表单模块(FormsModule或ReactiveFormsModule)。

相关内容

热门资讯

一分钟辅助!德普之星怎么开辅助... 一分钟辅助!德普之星怎么开辅助,拱趴大菠萝挂,资料教程(有挂方略)1、德普之星怎么开辅助破解器简单,...
一分钟辅助!约局吧作弊脚本,h... 一分钟辅助!约局吧作弊脚本,hhpkoer辅助器,秘籍教程(真的有挂)1、让任何用户在无需约局吧作弊...
第五分钟辅助!德州透视插件,w... 第五分钟辅助!德州透视插件,wepoker私人局外卦,经验教程(有挂方法)1、下载好wepoker私...
九分钟辅助!aapoker辅助... 九分钟辅助!aapoker辅助软件合法吗,拱趴大菠萝挂哪里,指引教程(有挂头条)1、全新机制【aap...
六分钟辅助!wepoker免费... 六分钟辅助!wepoker免费透视脚本,wepoker安装教程,指南书教程(有挂分析)1、wepok...
3分钟辅助!wepoker私局... 3分钟辅助!wepoker私局代打,xpoker透视辅助,指南教程(有挂透明挂)1、wepoker私...
第九分钟辅助!pokemmo脚... 第九分钟辅助!pokemmo脚本辅助下载,wepoker透视器免费,资料教程(有挂教程)进入游戏-大...
第1分钟辅助!wpk透视辅助靠... 您好,wpk透视辅助靠谱吗这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
4分钟辅助!werplan透视... 4分钟辅助!werplan透视挂,pokernow辅助工具,策略教程(有挂详细)1、pokernow...
6分钟辅助!aapoker真的... 6分钟辅助!aapoker真的假的,wepoker开脚本视频,技法教程(有挂解惑)1、下载好wepo...