与Angular模板或反应形式相关的问题。
删除 *ngFor 中使用的 FormArray 项目会引发错误
在《学习Angular不废话》一书中,有一个我尝试改进的如何使用FormArray的例子。这个示例使用基于包含产品的购物车的动态表单,我尝试...
删除 *ngFor 中使用的 FormArray 项目会引发错误
在《学习Angular不废话》一书中,有一个我尝试改进的如何使用FormArray的例子。这个示例使用基于包含产品的购物车的动态表单,我尝试...
如何更改<input type="color">的默认颜色?
我正在使用 Angular,想要更改 元素的默认颜色。目前,它默认显示黑色(#000),但我想将其设置为不同的颜色...
在任何用户交互之前显示 mat-form-field 验证消息
这是参考代码, 输入报价名称 这是参考代码, <div> <mat-form-field class="w-100 mt-2" appearance="outline"> <mat-label>Enter a name for your quote</mat-label> <input #quoteName matInput placeholder="Enter a name for your quote" formControlName="quoteName" [maxlength]="40" (input)="onQuoteNameInput($event)" /> <mat-hint align="end">{{quoteName.value.length}} / 40</mat-hint> <mat-error *ngIf="quoteDetailsFormGroup.controls.quoteName.touched && quoteDetailsFormGroup.controls.quoteName.errors?.required">Quote Name is required.</mat-error> </mat-form-field> </div> 在上面的代码中,我使用 Touched 属性来控制错误消息的显示,因此我可以根据需要成功显示或隐藏它们。但是,表单加载后,输入字段的轮廓边框仍然显示为红色。如何防止最初出现红色轮廓? 除了触摸状态之外,还添加了 mat-form-field-invalid 类检查: <mat-form-field class="w-100 mt-2" appearance="outline" [class.mat-form-field-invalid]="quoteDetailsFormGroup.controls.quoteName.touched && quoteDetailsFormGroup.controls.quoteName.errors"> 或者,您可以在 CSS 中使用 Angular 的内置 ng-valid 和 ng-invalid 类以及触摸状态: .mat-form-field { &.ng-invalid.ng-untouched { // Override the default error styles when untouched .mat-form-field-outline { color: rgba(0,0,0,0.12) !important; // Default outline color } } } 您还可以将表单控件初始化为 null 而不是空字符串,以防止立即验证: this.quoteDetailsFormGroup = this.formBuilder.group({ quoteName: [null, Validators.required] }); 另一种方法是使用 updateOn: 'blur' 推迟验证,直到字段失去焦点: this.quoteDetailsFormGroup = this.formBuilder.group({ quoteName: ['', { validators: Validators.required, updateOn: 'blur' }] }); 最稳健的解决方案是结合方法 1 和 3。这是完整的代码: // Component class export class QuoteComponent implements OnInit { quoteDetailsFormGroup: FormGroup; constructor(private formBuilder: FormBuilder) { this.quoteDetailsFormGroup = this.formBuilder.group({ quoteName: [null, Validators.required] }); } } <div> <mat-form-field class="w-100 mt-2" appearance="outline" [class.mat-form-field-invalid]="quoteDetailsFormGroup.controls.quoteName.touched && quoteDetailsFormGroup.controls.quoteName.errors"> <mat-label>Enter a name for your quote</mat-label> <input #quoteName matInput placeholder="Enter a name for your quote" formControlName="quoteName" [maxlength]="40" (input)="onQuoteNameInput($event)" /> <mat-hint align="end">{{quoteName.value.length}} / 40</mat-hint> <mat-error *ngIf="quoteDetailsFormGroup.controls.quoteName.touched && quoteDetailsFormGroup.controls.quoteName.errors?.required"> Quote Name is required. </mat-error> </mat-form-field> </div> 它将使用 null 初始化表单控件 仅当字段被触摸且有错误时才显示红色轮廓
ControlValueAccessor 在表单字段复选框中使用实现的格式和解析器,但输入数据正在更改,它不反映复选框
一个 TrueFalseValueComponent 用于如果选中复选框,我将得到 1,如果选中为 false,我将得到 0。 例如,我选择了第一条记录选择值 0。现在未选中复选框。 ...
Angular 的格式化程序和解析器、ng-true-value 和 ng-false-value 指令变得可行
目前我创建了两个项目指令。但是一个指令用于如果复选框被选中,我将得到 1,如果选中为 false,我将得到 0。另一个指令用于转换值...
我创建了自己的指令,用于添加验证和删除基于验证的指令输入参数。加载和表单字段值更改验证器不起作用时出现错误...
在 Angular 中,如何在同一组件内的单独 ng-template 中分离反应形式的部分?
我想使用来自 ng-template 的角反应形式的某些部分。分离在不同的组件中可以很好地使用 ngViewProviders。但我想通过 ng-template 来实现它。 ...
我想根据信号输入禁用/启用表单组。我不想使用 [disabled] 来切换表单。 @成分({ 选择器:'应用程序子', 独立:真实, 进口:[
从 HTML 模板中的 FormArray 访问 Angular 类型化表单属性
我正在开发一个管理货币的表单,其中包含代码和标签字段。我正在使用最新的 Angular 功能并尝试利用类型化表单。 我在 FormGroup 中有一个 FormArray,它...
使用 formbuilder 和 null 作为初始值的键入 Angular 表单
我想在 Angular 中使用类型化表单。 在我的场景中,我有一个应该具有一些属性的表单组。 所有这些都应该可以为空,并以初始值“null”开始...
让我们假设有一个像这样的简单形式: 返回 this.formBuilder.group({ myNumber: this.formBuilder.control( 无效的, 验证器.required ) }); 控制
如果表单中的错误计数大于 1,我想有条件地应用 css 类。在 angular4 中如何执行此操作? 成分: 从“@angular/core”导入{组件}; 导入 { 表单组,
Angular:无法读取未定义的属性(读取“setValue”)
我想用一些给定的数据填写表格,因为代码中可能很清楚;但是当表单位于另一条路线中并且我更改路线时,我会收到此错误。虽然我得到了数据,并且我可以...
ngValue 在 Angular 选择元素中被截断为 50 个字符
在使用 Angular 15 开发 Web 应用程序时,使用 ngValue 的 select 元素的值被截断为 50 个字符。当我检查 event.target.value 时,它只返回前 50 个
Angular 17 Reactive Form:尽管有布尔值,单选按钮始终在加载时检查
我正在开发一个 Angular 组件,该组件使用带有单选按钮的反应式表单。我想创建三个代表布尔选择(真或假)的单选按钮。单选按钮正在初始化...
我正在寻求有关使用信号双向绑定的最佳实践的指导,特别是对于模板驱动形式的复杂对象。我们的团队广泛使用模板驱动的表单,并且
这是 JOYBOY 已删除问题的重新发布,标题为 NG01203: No value accessor for form control name: 'name' 我已经创建了 Angular 18 应用程序。我正在使用独立的组合
我正在开发一个 Angular 组件,如果输入字段被触摸并且无效,我想在该组件中显示错误消息。但是,错误消息并未按预期出现。 错误消息&q...
错误:NG01203:没有表单控件名称的值访问器:'name'
有人可以帮助我吗?我有两个组件“父级”和“子级”。在父组件中,我有这个 formGroup 和两个获取人员和城市的方法。 ngOnInit() { this.form = this.fb.group({ 人: