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

相关内容

热门资讯

玩家必看科普!云扑克有透视吗,... 玩家必看科普!云扑克有透视吗,wpk德州局透视,透明教程(有挂透明);玩家必备必赢加哟《136704...
一分钟带你了解!hhpoker... 一分钟带你了解!hhpoker破解工具,拱趴大菠萝万能挂,揭秘攻略(有挂透明);1.拱趴大菠萝万能挂...
一分钟了解!hhpoker作弊... 一分钟了解!hhpoker作弊码,pokemmo修改器手机版,扑克教程(有挂透明);亲真的是有正版授...
重大科普!wepoker辅助是... 1、重大科普!wepoker辅助是真的假的,wepoker破解工具,微扑克教程(有挂软件);详细教程...
来一盘!德普之星透视辅助软件下... 来一盘!德普之星透视辅助软件下载,hhpoker外挂靠谱吗,大神讲解(有挂透视)是由北京得德普之星透...
大家学习交流!aa poker... 大家学习交流!aa poker辅助包,pokemmo辅助脚本,揭秘攻略(有挂教程)是一款可以让一直输...
每日必看推荐!约局吧德州透视,... 您好,wepoker黑侠辅助器这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
玩家必看科普!wepoker作... 您好,pokemmo脚本最新版这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很...
我来教大家!哈糖大菠萝软件下载... 1、我来教大家!哈糖大菠萝软件下载,aapoker插件,可靠教程(有挂方法);详细教程。2、哈糖大菠...
我来教教你!哈糖大菠萝万能挂,... 我来教教你!哈糖大菠萝万能挂,聚星ai辅助工具收费多少,实用技巧(有挂透明)关于聚星ai辅助工具收费...