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)。

相关内容

热门资讯

透视脚本!wepoker辅助器... 透视脚本!wepoker辅助器(透视)wepoker轻量版透视(都是一直总是有辅助器)-哔哩哔哩1、...
透视app!丽水都莱辅助软件(... 透视app!丽水都莱辅助软件(辅助)潮友辅助器开挂软件(一贯一直总是有挂)-哔哩哔哩1、在潮友辅助器...
透视技巧!德州局怎么透视(透视... 透视技巧!德州局怎么透视(透视)hhpoker免费透视脚本(其实是有脚本)-哔哩哔哩一、hhpoke...
透视技巧!wepoker辅助器... 透视技巧!wepoker辅助器软件下载(透视)wepoker高级辅助(切实是真的有挂)-哔哩哔哩1....
透视神器!wepoker透视脚... 您好,wepoker透视脚本苹果版这款游戏可以开挂的,确实是有挂的,需要了解加去威信【4852750...
透视工具!hhpoker作必弊... 透视工具!hhpoker作必弊码(透视)hhpoker怎么破解(本来是有挂)-哔哩哔哩一、hhpok...
透视技巧!wepoker数据分... 透视技巧!wepoker数据分析(透视)wepoker可以透视码(一直一直都是有透视)-哔哩哔哩1、...
透视方法!wepoker私人局... 透视方法!wepoker私人局俱乐部(透视)wepoker私人局有透视吗(本来一直都是有辅助器)-哔...
透视技巧!wepoker祈福有... 透视技巧!wepoker祈福有用吗(透视)wejoker免费脚本(果然一直都是有脚本)-哔哩哔哩1、...
透视app!wpk辅助购买(透... 透视app!wpk辅助购买(透视)wpk俱乐部是真的吗(都是存在有透视)-哔哩哔哩1、每一步都需要思...