首页 > 其他分享 >Angular Form 的一些问答

Angular Form 的一些问答

时间:2023-11-05 19:56:04浏览次数:29  
标签:触发 Form 递归 表单 validator 节点 FormGroup 问答 Angular

Angular Form 的一些问答

如何理解FormGroup, FormArray, FormControl?

它们可以映射成对象,数组,原生字段

FormGroup 上的invalid 字段是如何获取整个表单的状态的?

  • 首先,它的状态是存在于它内部的Status字段。
  • 其次,每单它内部的一个节点有值的改动,会调用updateValueAndValidity()方法,而且改方法是递归它的parent 调用的。在FormGroup 内部它会递归遍历它的孩子获取每个节点的状态,从而得到了表单的状态。
    简单来说,只有有一个节点触发了上述的方法,并且冒泡到了根节点,那么表单根节点的状态就计算更新了

FormGroup上是如何获取到表单的值的。

  • 它是通过递归调用它的孩子得到整个值得

某个节点更新值了,会发生哪些事?

  • 首先,它会更新节点自己得值,重置本身得状态。
  • 然后触发自身得validator, 先触发同步得validator, 如果通过,则触发异步的validator, 从而得到最终的状态值。!!!!!注意这一步只有在enabled 的状态下才会做
  • 如果参数中指明发事件(opt.emitEvent),则会发布ValueChanges, StatusChanges 事件
  • 如果参数中指明冒泡事件(opt.onlySelf==false),则递归这个流程到父级,直到根节点。

有时某个节点的验证需要其他节点的参与,这边又两个问题

  • 如何获取整个表单的值,可以通过FormControl的parent 递归得到根节点,从而得到整个表单的值
  • 如何触发其他节点的validator,可以通过根节点找到相关联的节点,然后调用它的updateValueAndValidatiy({onlySelf:true,emitEvent:false});

标签:触发,Form,递归,表单,validator,节点,FormGroup,问答,Angular
From: https://www.cnblogs.com/kongshu-612/p/17811021.html

相关文章

  • java.time.format.DateTimeParseException: Text ‘202310132358‘ could not be pars
    你遇到的问题是由于在解析日期和时间时格式不正确。Java无法解析‘202310132358’这个字符串,因为它不符合Java日期时间格式。Java期望的日期时间格式通常是“yyyy-MM-ddHH:mm:ss”,其中:yyyy是四位数的年份MM是两位数的月份dd是两位数的日期HH是两位数的小时(24小时制)mm是两......
  • css:transform实现平移、旋转、缩放、倾斜元素
    目录文档语法示例旋转元素transform-rotate旋转过渡旋转动画参考文章文档https://developer.mozilla.org/zh-CN/docs/Web/CSS/transform语法/*Keywordvalues*/transform:none;/*Functionvalues*/transform:matrix(1,2,3,4,5,6);transform:translate(12px,50......
  • winform切换页面
    布局效果如下图: 首先在主窗体后台代码声明需要打开的窗体变量,代码如下:1publicpartialclassForm1:Form2{3ButtonbtnShadow;//作为中间寄存button,用于显示4Homehome;5Settingsetting;6Recordrecord;7......
  • 《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》阅
    论文标题《ANIMAGEISWORTH16X16WORDS:TRANSFORMERSFORIMAGERECOGNITIONATSCALE》谷歌论文起名越来越写意了,“一幅图像值16X16个单词”是什么玩意儿。ATSCALE:说明适合大规模的图片识别,也许小规模的不好使作者来自GoogleResearch的Brain团队,经典的同等贡献......
  • Winform高亮显示图标和标题
    效果下如图: 创建ActivateButton公用方法,代码如下:privatevoidActivateButton(objectsenderBtn,Colorcolor1,Colorcolor2,Colorcolor3){if(senderBtn!=null){DisableButton();//B......
  • Flowable Form 主要流程
    表单创建接口`http://localhost:8080/flowable-ui/modeler-app/rest/models`方法org.flowable.ui.modeler.rest.app.ModelsResource#createModel主要涉及表ACT_DE_MODELPOSThttp://localhost:8080/flowable-ui/modeler-app/rest/models{"name":"FORM_FIRST_NAME"......
  • C# winform捕获程序异常内容
    staticvoidMain(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.ThreadException+=Application_ThreadException;Application.Run(newForm1());}privatestaticvoidApplication_Threa......
  • 聊聊Transform模型
    从之前的RNN系列到现在的Transformer模型,是一个演进的过程,技术的实现与迭代并不是一蹴而就,而是一个持续演进的历程。如果一开始就从Tranformer的模型机制来学习,知识的不全面以及欠缺就会导致懵逼甚至看不懂又不理解。RNN系列:聊聊RNN&LSTM聊聊RNN与seq2seq聊聊RNN与Attention......
  • c# winform获取gridview数据
    //取单元格数据三种方法this.dataGridView1[e.ColumnIndex,e.RowIndex].Value.ToString();//第一种取法this.dataGridView1.Rows[e.RowIndex].Cells["你所要取值的列名称"].Value.ToString();//第二种取法this.dataGridView1.Cur......
  • 【RAG问答相关】复杂知识库问答综述(上)
    前言大模型落地应用过程中,一般形式还是问答形式,无论是人机对话还是机机对话,都是靠问答来解决一系列问题。无论是要求大模型给出具体的专业化知识,还是要求大模型进行某项作业的开展,都是以问题(指令其实也是一种特殊的问题)的形式进行。所以在RAG中,如何将问题转化为大模型能够理解的......