首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Angular FormGroup在ngAfterViewInit上变得无效

是因为ngAfterViewInit生命周期钩子在视图初始化之后才被调用,而FormGroup的初始化应该在视图初始化之前完成。因此,在ngAfterViewInit中对FormGroup进行的任何更改都不会生效。

解决这个问题的方法是将FormGroup的初始化代码移到ngOnInit生命周期钩子中。ngOnInit在组件初始化时被调用,此时视图还没有初始化,所以可以确保FormGroup的初始化在视图初始化之前完成。

以下是一个示例代码:

代码语言:txt
复制
import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl } from '@angular/forms';

@Component({
  selector: 'app-example',
  template: `
    <form [formGroup]="myForm">
      <!-- form controls here -->
    </form>
  `,
})
export class ExampleComponent implements OnInit {
  myForm: FormGroup;

  ngOnInit() {
    this.myForm = new FormGroup({
      // form controls initialization
    });
  }
}

在上面的示例中,FormGroup的初始化代码被移到了ngOnInit中,确保了在视图初始化之前完成。这样,在ngAfterViewInit中对FormGroup的更改就会生效了。

关于Angular FormGroup的概念、分类、优势、应用场景,以及腾讯云相关产品和产品介绍链接地址,可以根据具体情况进行补充。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Angular 从入坑到挖坑 - 表单控件概览

4.2.3、数据的有效性验证 某些时候需要对于用户输入的信息做有效性验证,此时可以控件添加上原生的 HTML 表单验证器来设定验证条件,当表单控件的数据发生变化时,angular 会通过指令的方式对数据进行验证...在数据验证失败的情况下,对于系统来说,表单是不允许提交的,因此可以将提交事件绑定到表单的 ngSubmit 事件属性,通过模板引用变量的形式,提交按钮处进行数据有效性判断,当无效时,禁用表单的提交按钮...当构建复杂表单时,可以 FormGroup 中通过嵌套 FormGroup 使表单的结构更合理 import { Component, OnInit } from '@angular/core';...,通过使用 formGroupName 属性将 FormGroup 控件组中的 FormGroup 实例绑定到控件 <form [formGroup]='profileForm' (ngSubmit)...模板驱动表单中,因为不是直接使用的 FormControl 实例,因此这里应该在模板添加一个自定义的指令来完成对于控件数据的校验 使用 angular cli 创建一个用来进行表单验证的指令 ng

18.9K20

Ubuntu 18.04安装Angular图文详解

在这篇文章中,我将向您展示如何在Ubuntu 18.04安装AngularAngular是一个用于制作令人敬畏的网站的前端Web开发框架。...这篇文章是一系列Angular文章中的第一篇,旨在帮助您开始Angular 7中创建网站。 我们将首先学习如何在Ubuntu 18.04安装Angular 7。...这有助于减轻运行时错误,您认为变量是一种类型但实际是另一种类型。 其次,Typescript使用类和对象使代码更具可读性。...安装NodeJs和NPM 要在Ubuntu 18.04安装Angular,我们首先需要安装NodeJ和Node Package Manager(NPM)。...如下图所示: 这只创建了一个非常基本的Angular应用程序框架。 本系列的下几篇文章中,我们将了解它所创造的内容。 总结 我希望你喜欢这篇文章。

2.8K00
  • 解决innerHtml Jquery使用无效果的问题

    ().getTime()-t1) +" 毫秒"; 或 使用Jquery的方式: $("#timeShow").html('加载本页耗时 ' + loadTime + 'ms'); innerHTMLJQuery...中使用的话是无效果的, JQuery提供了三种方法实现指定标签赋内容:.html(),.val(),.text()。...三种方法区别具体: .html()用为读取和修改元素的HTML标签 对应js中的innerHTML .html()是用来读取元素的HTML内容(包括其Html标签), .html()方法使用在多个元素时....val()用来读取或修改表单元素的value值 .val()是用来读取表单元素的"value"值,.val()只能使用在表单元素 关于三者的区别 .val()方法和.html()相同,如果其应用在多个元素时...,只能读取第一个表单元素的"value"值,但是.text()和他们不一样,如果.text()应用在多个元素时,将会读取所有选中元素的文本内容。

    41310

    教程| Angular 4 中加载功能模块(

    过去几年来,Angular 作为单页 Web 应用程序的开发框架变得越来越流行。...请注意,本教程适用于熟悉使用 Angular 进行基本 Web 应用程序开发的开发人员。 Angular 中的功能模块 单页 Web 应用程序启动时仅呈现一个 HTML 页面。...前提条件 要掌握本教程,需要在开发机器安装两个工具: Node Angular CLI 输入命令 ng -v,以便找到您当前使用的 Angular CLI 和 Node 的版本。...@angular/cli: 1.0.2 node: 7.9.0 os: win32 x64 githut的源代码:https://github.com/suresht1/NG_Loading_Feature_Modules... Windows 机器,按下 Fn+F12。 Mac 机器,按下 Command->Option->i。现在您会看到 Chrome 开发人员工具 GUI。

    2.2K10

    Angular开发实践(七): 跨平台操作DOM及渲染器Renderer2

    Angular开发实践(六):服务端渲染》这篇文章的最后,我们也提到了服务端渲染中需要牢记的几件事件,其中就包括不要使用window、 document、 navigator等浏览器特有的类型以及直接操作...这样就引出了 Angular 主要特性之一:横跨所有平台。...this.demoDiv.nativeElement, 'background-color', 'red'); // 通过Renderer2设置div的css样式background-color } } 获取组件中的div Angular...-- DIV的id:demoDiv --> 组件模板中,我们 div 定义了 #demoDiv 的模板变量,那么 demoDiv 就等于该 div 的 DOM 对象,因此我们可以通过 demoDiv.id...ngAfterViewInit 中通过 this.demoDiv.nativeElement 获取到该 div 的 DOM 对象,然后获取元素的id。

    2.6K90

    Angular: 最佳实践

    Note: 本文中,我将尽量避免官方 Angular Style Guide 提及的模式和有用的实践,而是专注我自己的经验得出的东西,我将用例子来说明。...注意我们是怎么组件类创建一个 statuses 字段,以便我们可以模版中使用这个枚举。但是假如我们多个组件中使用这个枚举呢?或者假如我们要在不同的组件使用其他枚举呢?我们需要不停创建这些字段?...小经验:当我们带有子元素的 HTML 元素编写 ngFor 指令时,请考虑将该元素分离为单独的组件,就像下面: <div *ngFor="let user...Rx.js 允许你去缓存 HTTP 请求的结果(实际<em>上</em>,任何的 Observable 都可以,但是我们现在说的是 HTTP 这内容),并且有一些示例你可能想要使用它。...Observables 使得这<em>变得</em>很容易: class CountryService { constructor(private http: Http) {} private countries

    2.8K40

    分享下 Backbone、Vue、Angular、React 项目的使用经验

    新的项目里,采用的是 Angular。 场景三:Angular 实现桌面端与移动应用代码复用 ?...代码复用 Ionic 1.x 是基于 Angular 1.x,由于 Web 端也采用了 Angular。这样做不仅从统一了技术栈,还实现了某一部分的代码复用。...演进 后来,桌面端从 Angular 1.x 迁移(重写一部分)到了 Angular 4.x,旧的应用还运行在旧有的 Angular 1.x 代码,而新的应用则运行在新的系统。...为什么 Angular 选型里失去优势? Angular 1.x 到 Angular 2.x 这段期间里,有大量的技术人员因为奥斯本效应而选择了其他框架。...而 Angular 也被我排除了,因为它要构建出包发布,从流程规范比较麻烦。最后我选择了:Vue + jQuery + WeUI。

    2.2K60

    Angular2 -- 生命周期钩子

    ngDoCheck:用来检测所有变化(无论是Angular本身能检测还是无法检测的),并作出相应行动。每次执行“变更检测”时被调用。...ngOnDestory:Angular销毁指令或组件之前做一些清理工作,比如退订可观察对象和移除事件处理器,以免导致内存泄漏。...ngAfterContentChecked:当Angular检查完那些投影到自己视图中的外来内容的数据绑定之后调用。 ngAfterViewInitAngular创建完组件的视图后调用。...ngAfterViewChecked:Angular检查完组件视图中的绑定后调用。...ngOnInit:第一轮ngOnChanges完成之后调用。 ngDoCheck:每个Angular变更检测周期中调用。 ngAfterContentInit:当把内容投影进组件之后调用。

    77420

    Angular 2 + 折腾记 :(7) 初步了解表单:模板驱动及数据驱动及脱坑要点

    testform.submitted)"> 您输入的值有误,请重新输入 提交 复制代码 有两种方式处理来对上面的表单做校验; Submit...()函数内,点击提交的时候对整个表单一一去判断,传统方式基本这样 每个控件输入的时候对应去触发对应的事件做校验,比如[ngModelChange]来处理双向绑定的值校验 ---- 数据驱动(Reactive...FormArray()),FormGroup()内置多种校验方式 formControlName: 同步与FormGroup构建表单内相同字段的值!.../core'; import { FormGroup, Validators, FormBuilder } from '@angular/forms'; // 引入表单的一些特性 import { Router.../core'; import { Router, ActivatedRoute } from '@angular/router'; import { FormGroup, FormControl, Validators

    3.8K20

    干货 | 一文搞懂AlmaLinux安装Angular JavaScript框架

    Angular是地球最受欢迎的JavaScript框架之一。实际,根据开放源代码索引,AngularGitHub上排名第9。...借助Angular,您的公司可以快速构建和部署Web应用程序和移动应用程序。如果您的公司认真考虑竞争日益激烈的世界中保持竞争力,那么您将需要考虑将Web应用程序和/或移动应用程序作为战略的一部分。...无论哪种方式,我都想向您展示如何在1:1二进制替代品安装Angular,以代替Red Hat Enterprise Linux AlmaLinux。...你需要什么 AlmaLinux的运行实例 具有sudo特权的用户 如何在AlmaLinux安装Angular 登录到您的AlmaLinux服务器,并首先使用以下命令安装git: sudo dnf install...Angular已成功为该应用程序提供服务。 恭喜,您现在已为开发人员准备了Angular流行的框架的帮助下,让他们登录到服务器并开始开发公司理想的Web或移动应用程序。

    1K20

    Angular ViewChild和ViewChildren

    ViewChild Angular 为我们提供 ViewChild 和 ViewChildren 装饰器来获取模板视图中匹配的元素。ViewChild 是属性装饰器,用来从模板视图中获取匹配的元素。...视图查询 ngAfterViewInit 钩子函数调用前完成,因此 ngAfterViewInit 钩子函数中,就能正常获取查询的元素。...现在我们先来更新一下 AuthFormComponent 组件(关于它的出身,可以浏览 “Angular 内容投影” 这篇文章),即把下面的消息提示封装为组件。...但如果我们 ngAfterViewInit 生命周期钩子中重新设置天数,那么控制台将会抛出以下异常: ERROR Error: ExpressionChangedAfterItHasBeenChecked...nativeElement 属性,你会发现该属性对应的值是原生的 DOM 元素,因此我们可以 ngAfterViewInit 生命周期钩子中执行某些 DOM 操作: ngAfterViewInit(

    2.7K20

    Angular5.0.0新特性

    Angular Universal是一个帮助开发者实现SSR的开源项目,通过服务端渲染 Angular应用程序,然后客户端引导启动程序并生成HTML,由此更好的支持那些对javascript不太友好的化境来提高应用程序性能...3.编译器改进   改进了Angular编译器来支持增量编译,重新构建变得更快,特别是对生产环境的构建和AOT编译,增强的装饰器可以通过更精细化的去除空格来减小产生的包....4.国际化号码、日期和货币管道   Angular5中已经建立了新的号码,日期和货币管道,增加了跨浏览器的标准化实现,消除国际化不同环境中的差异。...8.HttpClient   4.3中HttpClient模块被封装在@angular/common中,新的HttpClient被封装在@angular/common/http中,更新Http模块后...11.RxJS 5.5   支持V5.2+ 5.5bundle更加优化了 12.New Router Lifecycle Events   GuardsCheckStart   ChildActivationStart

    1.7K10

    Angular 表单3--响应式表单 复杂验证

    表单验证是前端开发中重要的并且常见的工作 比如下面的表单包含三个字段: 验证要求: name: 必填 Category: 必填,只能输入大小写,字符长度3到10 Price:必填,只能输入不超过100的数字 显示要求: 错误表单放统一显示...只包含一个收集表单错误信息的方法 import { FormControl, FormGroup, Validators } from "@angular/forms"; // 自定义验证器 import...validator); this.label = label; this.modelProperty = property; } // 此方法用于收集错误信息,然后模板中遍历输出...Product Form // 注意 new ProductFormControl() 不是 new FormControl() export class ProductFormGroup extends FormGroup.../core"; import { NgForm } from "@angular/forms"; import { Product } from ".

    2.5K30

    Angular ElementRef 简介

    ,因为 web worker 环境中,是不能直接操作 DOM。...通过 ElementRef 我们就可以封装不同平台下视图层中的 native 元素 (浏览器环境中,native 元素通常是指 DOM 元素),最后借助于 Angular 提供的强大的依赖注入特性,我们就可以轻松地访问到...首先我们要先获取 div 元素,文中 “ElementRef 的作用” 部分,我们已经提到可以利用 Angular 提供的强大的依赖注入特性,获取封装后的 native 元素。...elementRef) { this.elementRef = elementRef; } constructor(private elementRef: ElementRef) { } ngAfterViewInit...我们直接选用 ngAfterViewInit 这个钩子,不要问我为什么,因为它看得最顺眼咯。不过我们后面也会有专门的文章,详细分析一下 Angular 组件的生命周期。

    1.6K60
    领券