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

FormControlName在angular 7材料模式中不显示以前的值

FormControlName在Angular 7材料模式中不显示以前的值可能是由于以下原因导致的:

  1. 组件绑定问题:确保组件中对FormControlName的绑定是正确的,包括表单控件名称和FormControl实例的匹配。
  2. 初始化值问题:在FormControl实例化之前,将初始值赋给FormControl。你可以使用setValue()方法将初始值赋给FormControl。
  3. 表单重置问题:如果在组件中使用了form.reset()或formGroup.reset()方法重置表单,则表单控件的值将被重置为初始值。
  4. 异步问题:如果从服务器获取数据填充表单控件的值,确保在数据返回之后再实例化FormControl,并将数据赋给FormControl。
  5. 生命周期钩子问题:检查在组件的生命周期钩子函数中是否正确处理了表单控件的值。在ngOnInit()中实例化FormControl并设置初始值是一个常见的做法。
  6. 检查模板绑定:确保在模板中正确地绑定了FormControlName,以及绑定的FormControlName是否是表单控件的名称。

对于上述问题,以下是一些可能的解决方法:

  1. 检查组件类中FormControlName的绑定是否正确:
代码语言:txt
复制
// 组件类
import { FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
  exampleForm: FormGroup;

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.exampleForm = this.fb.group({
      name: ['', Validators.required],
      email: ['', Validators.email],
      // 其他表单控件
    });
  }
}
  1. 在初始化表单控件之前设置初始值:
代码语言:txt
复制
// 组件类
import { FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
  exampleForm: FormGroup;

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    const initialValue = {
      name: 'John',
      email: 'john@example.com',
      // 其他表单控件的初始值
    };

    this.exampleForm = this.fb.group({
      name: [initialValue.name, Validators.required],
      email: [initialValue.email, Validators.email],
      // 其他表单控件
    });
  }
}
  1. 检查是否正确处理了表单重置:
代码语言:txt
复制
// 组件类
import { FormGroup, FormControl, Validators } from '@angular/forms';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
  exampleForm: FormGroup;
  initialValue = {
    name: 'John',
    email: 'john@example.com',
    // 其他表单控件的初始值
  };

  constructor(private fb: FormBuilder) { }

  ngOnInit() {
    this.exampleForm = this.fb.group({
      name: [this.initialValue.name, Validators.required],
      email: [this.initialValue.email, Validators.email],
      // 其他表单控件
    });
  }

  resetForm() {
    this.exampleForm.reset(this.initialValue); // 重置表单为初始值
  }
}
  1. 处理异步请求中的表单初始化问题:
代码语言:txt
复制
// 组件类
import { FormGroup, FormControl, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-example',
  templateUrl: './example.component.html',
  styleUrls: ['./example.component.css']
})
export class ExampleComponent implements OnInit {
  exampleForm: FormGroup;
  initialValue = {
    name: '',
    email: '',
    // 其他表单控件的初始值
  };

  constructor(private fb: FormBuilder, private http: HttpClient) { }

  ngOnInit() {
    this.http.get('api/data').subscribe((data: any) => {
      this.initialValue = data; // 从服务器获取数据
      this.initForm();
    }, error => {
      console.error('Failed to fetch data:', error);
      this.initForm();
    });
  }

  initForm() {
    this.exampleForm = this.fb.group({
      name: [this.initialValue.name, Validators.required],
      email: [this.initialValue.email, Validators.email],
      // 其他表单控件
    });
  }
}

确保在组件的模板中正确绑定FormControlName:

代码语言:txt
复制
<!-- 组件模板 -->
<form [formGroup]="exampleForm">
  <input type="text" formControlName="name">
  <input type="email" formControlName="email">
  <!-- 其他表单控件 -->
</form>

以上是一些可能导致FormControlName在Angular 7材料模式中不显示以前的值的原因和解决方法。希望对你有帮助!

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

相关·内容

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

前言 表单在整个系统作用相当重要,这里主要扯下响应表单实现方式。...; Submit()函数内,点击提交时候对整个表单一一去判断,传统方式基本这样 每个控件输入时候对应去触发对应事件做校验,比如[ngModelChange]来处理双向绑定校验 ---- 数据驱动...(Reactive Form) 响应式表表单:原理是一开始就构建整个表单,表单通过特殊指令formControlName一一关联(类似ngModel); 相关名词: FormGroup: 用来追踪表单控件有效状态及...FormArray()),FormGroup()内置多种校验方式 formControlName: 同步与FormGroup构建表单内相同字段!...// 4. nullValidator : 空判断 // 5. coompose :多重判断组合,下面有写法 // 6. pattern是支持正则模式,正则谨记转义转义转义 constructor

3.8K20

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

响应式表单 建立表单 由组件隐式创建表单控件实例 组件类中进行显示创建控件实例 表单验证 指令 函数 表单数据发生变更时,模板驱动表单通过修改 ngModel 绑定数据模型来完成数据更新,...将数据和一些对于用户行为约束(某个字段必须填啊、某个字段长度超过了长度限制啊)绑定到组件模板,从而完成与用户交互 4.2.1、模板驱动表单双向数据绑定 根模块引入 FormsModule...类实例对应于一个表单控件,使用时,通过将控件实例赋值给属性,后续则可以通过监听这个自定义属性来跟踪表单控件和状态 import { Component, OnInit } from '@angular...同模板驱动表单数据有效性验证相同,响应式表单同样可以使用原生表单验证器,设定规则时,需要将模板控件名对应数据第二个参数改为验证规则 响应式表单,数据源来源于组件类,因此应该在组件类中直接把验证器函数添加到对应...,返回 null,当数据无效时,则会返回一个对象信息,这里 nameinvalid 就是我们模板获取到错误信息 key <label

18.9K20
  • Angular 表单2--响应式表单, 处理异步数据

    上一节我们定义了一个响应式表单,其中表单数据是定义时候就初始化好,但是很多时候数据需要异步获取,比如 打开一个编辑页面,需要 请求HTTP拿到数据。...根据数据修改表单字段,最终体现在页面上。 我们改造上一节例子,成为异步获取数据。...我们先创建service文件, 写一个loadUser方法,模拟HTTP请求 import { Injectable } from '@angular/core'; import { of } from...Observable 这里我们订阅,我们模板中使用 async pipe 和 if else 语句实现有条件显示表单 tap(user => this.form.patchValue... 你会发现页面打开后一开始显示Loading User...过了大概2s后文字消失并显示表单。

    2.8K30

    在前端理解MVC服务之 Angular篇(完结)

    第三篇文章,应用程序将使用 Angular 构建,该版本来自TypeScript 第二个版本。因此,本文介绍应用程序从 TypeScript 到Angular迁移。...最后,最后一篇文章,我们将转换代码以将其与 Angular 框架集成。 第 1 部分。了解前端 MVC 服务:VanillaJS 点击直达 第 2 部分。...Models (贫血模式) 此示例第一个生成类是应用程序模型,user.model.ts由类属性和生成随机 D 私有方法(这些代码可能来自服务器数据库)。...模型将具有以下字段: id 唯一 name 用户名 age 用户年龄 complete bool,可以知道此条数据是否有用 用户Class已经被写在TS。...服务我们必须定义下一件事是我们想要开发每个操作。

    4.1K20

    理论 | Angular 响应式编程 -- 浅淡 Rx 流式思维

     Rx--隐藏在Angular 2.x利剑 一文我们已经初步了解了 Rx 和 Rx Angular 应用。 今天我们一起通过一个具体例子来理解响应式编程设计思路。...Angular 处理响应式表单只有 3 个步骤: 1、组件 HTML 模版给要处理控件加上 formControlName="blablabla" 2、form 标签添加 [formGroup...这两个数据流其实是来自于两个控件变化,而响应式表单获取值变化是非常简单就一行: 上面这行代码意思是从表单控件数组取得 formControlName 为 age 这个控件然后监听其变化...所幸是,Angular 提供了对于响应式编程非常友好设计,我们完全可以不在代码做订阅或取消订阅动作。那么问题来了,订阅的话,怎么获得呢?答案是 Async 管道。...这个 else 可以携带一个模版引用。比如下面例子:如果用户登录成功显示用户名,否则显示登录链接。 另一个改进是 ngIf 现在可以将评估表达式结果赋值给一个变量,好处是什么呢?

    5.3K10

    Angular2 :从 beta 到 release4.0 版本升级总结

    它标记出该模块拥有的组件、指令和管道, 并把它们一部分公开出去,以便外部组件使用它们。 它可以向应用依赖注入器添加服务提供商。 具体请参考官方文档。...组件迁移后,无法正确订阅事件 原因:angular(v4.0.0)依赖注入,若在不同地方声明provider,则会创建不同实例。...7. webstorm里,更改文件不能在浏览器更新输出。 原因:webstorm里面默认启用”safe write”,将保存先存到临时文件。...原因:angular(v4.1.1),使用ActivatedRouteAPI获取路由信息。...解决办法:注入DomSanitizer服务可以把一个标记为可信任,这里添加了一个叫safeUrlpipe组件,位于app/shared/pipe/safe-url.main.pipe.ts。

    8.2K00

    Angular系列教程-第四节

    1.表单 Angular 提供了两种不同方法来通过表单处理用户输入:响应式表单和模板驱动表单。...两者都从视图中捕获用户输入事件、验证用户输入、创建表单模型、修改数据模型,并提供跟踪这些更改途径 使用’@angular/forms’库FormGroup, FormControl,FormArray...,FormBuilder 等类构建出数据对象就是响应式表单,响应式表单,我们会在数据源里面进行各种操作,像添加校验等,html文件中使用 formGroup,formGroupName,formControlName...max 此验证器要求控件小于等于指定数字 required 此验证器要求控件具有非空 requiredTrue 此验证器要求控件为真 email 此验证器要求控件能通过 email...创建 6.2引入 6.3编写 7.自定义指令 directive

    2.8K50

    使用Angular8和百度地图api开发《旅游清单》

    根模块提供了用来启动应用引导机制。一个应用通常会包含很多功能模块。 组件 每个 Angular 应用都至少有一个组件,也就是根组件,它会把组件树和页面 DOM 连接起来。...,这里我用来做存储第三方组件位置,定义好之后app.module.ts引入: // material组件库 import { CustomMaterialModule } from '....生命周期里,初始化地图数据,根据前面我们定义list server,把hasDone为true数据过滤出来,显示地图上。...如果想了解完整代码,欢迎github上查看。 接下来看看我大陆页面,其实涉及难点不是很多,主要是根据hasDone为true或false去显示不同样式。...index.scss'] }) export class NewMapComponent implements OnInit { @Input() product; // 指定product从父组件传递

    6K30

    Angular: 最佳实践

    Note: 本文中,我将尽量避免官方 Angular Style Guide 提及模式和有用实践,而是专注我自己经验得出东西,我将用例子来说明。... TypeScript ,你可以限制字段或者变量,比如: interface Order { status: 'pending' | 'approved' | 'rejected' }...应用程序 tsconfig.json 文件,我们可以设置这个标志,告诉编辑器未明确类型时候抛出错误。否则,编辑器坚定它无法推断变量类型,而认为是 any 类型。...并且模版每个地方都会显示通知,你可以使用 ngClass 设置未通知样式。现在,我们想将通知状态与枚举进行比较,我们必须将枚举导入组件。...模版写 *ngIf=”someVariable === 1” 是可以,其他很长判断条件就不应该出现在模版

    2.8K40

    (转) 别再对 Angular 表单 ControlValueAccessor 感到迷惑

    首先我解释下为啥需要 ControlValueAccessor 接口以及它在 Angular 是如何使用。...官方文档是这么描述(译者注:为清晰理解,该描述翻译): ControlValueAccessor acts as a bridge between the Angular forms API and...,当 Angular 组件模板遇到 input 或 textarea DOM 原生控件时,会使用DefaultValueAccessor 指令: @Component({ selector:...组件封装器 由于 Angular 为所有默认原生控件提供了控件访问器,所以封装第三方插件或组件时,需要写一个新控件访问器。... writeValue 方法内我们把得到传给 slider 组件。 现在我们把上面描述功能做成一张交互式图: ?

    3.8K20

    Uright - 区块链音乐版权管理ÐApp

    这是通过"Manifestations"智能合约完成,该智能合约记录显示作品内容 IPFS 哈希、标题(计划附加元数据)以及注册时间,这些信息可以用来证明作者身份,并且内容可以从 IPFS 文件存储系统检索到...(开发…)如果有其他人已经注册了音乐人原创作品/支持材料,音乐人可以进行申诉,合约功能已实现,但在 Web 应用尚不可用。 (开发…)通过 NFT 技术对音乐人作品进行代币化。...项目地址:GitHub 架构 核心技术 IPFS 当音乐人使用数字文件(如.mp3 格式文件)注册自己作品时,文件将被上传至 IPFS 且其生成 IPFS 标识符(哈希)用于 Ethereum...用户可以选择将作品上传至 IPFS 网络,也可以保持作品私密性,设置将内容上传至 IPFS 网络,而只生成作品哈希。...最后,Solhint 被设置为定义连续集成和部署工作流一个步骤,这样,每次代码被推送到 GitHub 时,travis 都会运行所有的测试(对于合同和 Angular 前端),如果所有测试都通过,

    1.9K20

    一个Angular 5教程:一步一步指导实现你第一个Angular 5应用程序

    现在我们已经看到了我们自动生成Angular应用程序所有部分,这些部分实际发生在浏览器显示页面。...或者,您可能已经在所有那些华丽AngularJS演示中看到了它,您可以在其中输入要输入并为我们更新页面内容。 这里有一个有趣小技巧:Angular,双向数据绑定已经不再适合我们了。...通过使用formControlName,我们告诉Angular我们应该使用哪种反应形式字段。 就目前而言,以前方法与模板驱动表单和反应形式新方法之间主要区别在于反应方面的更多编码。...通过使用它,我们确保我们数据流一旦发生this.alive错误就会停止发布新,并且我们只需该onDestroy组件函数设置该。...您可以项目的所有部分使用该文件,并environment.tsAngular CLI负责提供来自相应项目的内容时将其包含在内environment.your-environment.ts。

    42.6K10

    当nz-checkbox-group多选框组遇上必选校验

    当nz-checkbox-group多选框组遇上必选校验 Angular2 ng-zorro-antd checkbox 今天表单中用到ng-zorro-antd组件多选框nz-checkbox-group...this.validateForm.value.one); // 3 console.long(this.validateForm.invalid);// 4 结果发现 初始时:1、false,2、false,3、oneOption...,4、false 选择一个选项后:1、true,2、false,3、oneOption+选中value,4、false 从而始终无法触发显示 “通知范围必选” 第一次尝试 最开始尝试是将this.validateForm.value.scopes...刷了n+1遍ng-zorro-antd官方文档表单部分后,“自定义异步校验”中看到这样一句话 : 当使用 响应式表单(Reactive Form) 时, ...nzValidateStatus 会自动从 NgControl 获取数据,也可以手动指定特定 NgControl组件将表单校>验函数校验过程和异步返回结果显示对应error | validating

    4.4K20

    如何使用WijmoJS 纯前端设计器,快速生成 Angular 应用

    我们示例,操作是单独选项卡打开设计图面,并使用 Angular标记提供上下文,以及源文件该标记位置。 现在单击链接以相邻选项卡打开设计器。...对于具有集合控件(例如网格列),设计器允许您添加,删除和修改单个成员。 “属性”窗格中找到columns属性,然后单击属性编辑器右侧显示项目”按钮以显示Angular标记定义八个列。...随着趋势线添加到图表,设计界面现在看起来像这样: 独立模式下,没有要更新源文件,但您仍然可以生成Angular标记并将它们从设计器复制到HTML源。...单击设计器左侧“源视图”图标以显示生成Angular标记。 从那里,突出显示要复制文本,并使用快捷键(Windows上,Ctrl + C)将文本复制到剪贴板。...在这种情况下,设计器以斜体显示只读文本框绑定。 保存操作期间保留绑定事件; 但是,设计器没有用于创建或编辑它们界面。

    5.4K40

    Angular v18 现已推出!

    angular.dev 看看吧!材料 3 现在稳定了!几个月前,我们引入了对 Material 3 实验性支持。...今天,我们很高兴地与大家分享, Google.com 上运行核心库之一——事件调度(以前称为 jsaction)现在在 Angular monorepo 。...每个组件旁边,您可以找到一个图标,表示组件水合状态。要预览页面上 Angular 水合组件,您还可以启用叠加模式。...而不是像今天这样服务器上渲染@placeholder块,您将能够启用一种模式,让 Angular 服务器上渲染@defer块主要内容。...引擎盖下,它使用 Vite 和 esbuild 来取代以前 webpack 体验。对于大多数应用程序,开发人员可以通过更新其angular.json来更新到新构建系统。

    23310

    Angular 2 架构(下)

    每种形式都有一个方向——从 DOM 来、到 DOM 去、双向,就像图中箭头所示意。 插 : HTML 标签显示组件。...Angular包含以下三种类型指令: 属性指令:以元素属性形式来使用指令。 结构指令:用来改变DOM树结构 组件:作为指令一个重要子类,组件本质上可以看作是一个带有模板指令。...---- 服务(Services) Angular2服务是封装了某一特定功能,并且可以通过注入方式供他人使用独立模块。 服务分为很多种,包括:、函数,以及应用所需特性。...传统开发模式,调用者负责管理所有对象依赖,循环依赖一直是梦魇,而在依赖注入模式,这个管理权交给了注入器(Injector),它在软件运行时负责依赖对象替换,而不是在编译时。...注入器是一个维护服务实例容器,存放着以前创建实例。 如果容器还没有所请求服务实例,注入器就会创建一个服务实例,并且添加到容器,然后把这个服务返回给 Angular

    2.2K20

    AngularDart4.0 指南- 依赖注入 顶

    你当然希望测试过程中发生这种情况。 如果汽车轮胎压力低时候应该发出警告信号呢? 如果您在测试过程无法换上低压轮胎,您如何确认它实际上会闪烁警告? 你无法控制汽车隐藏依赖。...它唯一目的是显示显示英雄名字列表HeroListComponent。 HeroListComponent这个版本从mockHeroes获取它英雄,这是一个单独文件定义内存集合。...具有依赖关系供给类 也许EvenBetterLogger可以日志消息显示用户名。 此记录器从注入UserService获取用户,该用户服务也应用程序级别注入。...在这个示例,只需要在HeroesComponent,它将替换元数据提供程序数组以前HeroService注册。...注入器维护一个内部令牌提供者映射,当它被要求依赖时候它会引用它。 令牌是mapkey。 之前所有例子,依赖性都是一个类实例,类类型作为自己查找键。

    5.7K20

    AngularDart4.0 指南- 模板语法一 顶

    Angular早期教程,你遇到了插双曲括号{{and}}。...Angular用相应属性替换该名称。 在上面的例子Angular评估了title和heroImageUrl属性,并“填充空白”,首先直接显示一个应用标题,然后是一个英雄图像。...{{1 + 1}}内插大括号包围模板表达式1 + 1.在下面的属性绑定部分[property] =“expression”,模板表达式显示符号右侧引号。...这个规则对Angular“单向数据流”策略是必不可少。您不必担心读取组件可能会改变一些其他显示。这个视图整个渲染过程应该是稳定。...Angular可能会或可能不会显示更改Angular可能会检测到更改并发出警告错误。通常来说,保留数据属性和方法返回就够了。

    5.2K10
    领券