标签: angular-reactive-forms

Angular 4 Reactive Form 对于所需复选框的自定义验证始终无效

使用 Angular 4,我有一个带有复选框的反应式表单。必须至少选中其中一个复选框才能提交表单。

我创建了一个自定义验证,它似乎返回正确的值,但表单始终无效。但是,当我检查表单控件是否有错误时,我得到错误。

---- 笨蛋 ----

这是具有相同行为的示例代码:

@Component({
  selector: 'my-app',
  providers: [FormBuilder],
  template: `
    <div> 
      Checkbox values: {{alertForm.value | json}}
      <mark> Is Form Valid: {{alertForm.valid}} </mark> <-- WHY IS FORM VALID ALWAYS FALSE?
      Does Fields have error: {{alertForm.get('fields').hasError('checkboxSelected')}}
    </div>

    <form [formGroup]="alertForm">
      <fieldset class="form-group" formGroupName="fields">
        <legend class="col-md-4"> Fields</legend>
        <div class="col-md-8 checkbox column-2">
            <label *ngFor="let type of types.controls; let i=index"> 
              <input name="fieldsAdd" type="checkbox" [formControl]="type" />
                {{fields[i].name}}
            </label>
        </div>
    </fieldset>
    </form> 

  `
})
export class App implements OnInit {
  alertForm: FormGroup;
  fields …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms angular-forms

1
推荐指数
1
解决办法
9159
查看次数

Angular 6 中动态添加字段的表单验证

我创建了一个带有多个输入字段的反应式表单。验证对于一个字段效果很好,但我坚持对动态添加的输入字段进行验证。

我想要实现的是,对于每一行,两个输入字段都应该是必需的。问题肯定是formarray的访问。

在此输入图像描述

我在Stackblitz上创建了一个简化版本

javascript angular angular-reactive-forms angular6

1
推荐指数
1
解决办法
4588
查看次数

类型“FormArray”角度 6 上不存在属性“splice”

如何将 formArray 中的 formgroup 推送到第 0 个索引处。它应该被 formArray 中的第 0 个元素替换。

angular angular-reactive-forms

1
推荐指数
1
解决办法
7781
查看次数

使用 Angular 反应形式编辑对象

如何使用反应形式编辑对象?假设我们有一个对象数组:

people = [
{name: "Janek", color:"blue", id: 1},
{name: "Maciek", color:"red", id: 2},
{name: "Ala", color:"blue", id: 3},
]
Run Code Online (Sandbox Code Playgroud)

如果我想使用模板驱动方法编辑对象的属性 - 这非常简单。超文本标记语言

*ngFor="let person of people" 
Run Code Online (Sandbox Code Playgroud)

ngModel="person.name""person.color"

如何使用反应式表单来做到这一点,这样我就不会丢失 Id (和其他属性)?

typescript angular angular-reactive-forms

1
推荐指数
1
解决办法
5316
查看次数

如何以 html Angular 形式执行条件验证

我有一个表单,仅当值不等于 0 时,我才想实现 MAXLENGTH 验证。

那么有parameter.valueMaxlength === 0 { then dont execute maxlength validation } 没有办法把这个逻辑写在html文件中呢。

 <mat-form-field *ngSwitchCase="'TEXTBOX'" class="example-full-width">
  <input
    matInput
    [placeholder]="parameter.displayName"
    [formControlName]="parameter.id"
    [id]="parameter.id"
    [type]="parameter.dataType"
    [maxlength] = "parameter.valueMaxlength"

  />
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

forms maxlength angular angular-reactive-forms angular2-form-validation

1
推荐指数
1
解决办法
2608
查看次数

角度形式数组推送形式组

每次尝试这样的事情时,都会向我显示错误“TypeError:control.setParent 不是函数”...目标是获得答案('odgovori' FormArray),但不是在输入上循环,而是在单选组中循环...比用户选择单选按钮作为正确答案并存储全部。什么时候:

console.log(this.odgovorForm.value)
Run Code Online (Sandbox Code Playgroud)

一切都显示正常,但是当推送时显示错误

get odgovori() {
    return this.pitanjeForm.get('odgovori') as FormArray;
  }

 pitanjeForm = this.fb.group({
    data: ['', [Validators.required]],
    odgovori: this.fb.array([]),
    tacan: ['', [Validators.required]]
  });

  odgovorForm = this.fb.group({
    data: ['', [Validators.required]],
    color: 'danger'
  });

  addAnswer(): void {
    console.log(this.pitanjeForm.value, this.odgovorForm.value);
    this.info = this.odgovorForm.value;
    this.odgovori.push(this.info);
  }
Run Code Online (Sandbox Code Playgroud)

超文本标记语言

<form [formGroup]="pitanjeForm">
 <div>
   <input formControlName="data">
 </div>
  <form [formGroup]="odgovorForm">
    <input formControlName="data">
    <button (click)="addAnswer()"></button>
  </form>
 <div *ngFor="let odgovor of odgovor.value; index as i">
   <input type="radio" value="{{ i }}"> 0 - 30<br>
 </div>
</form>
Run Code Online (Sandbox Code Playgroud)

forms typescript angular angular-reactive-forms

1
推荐指数
1
解决办法
2万
查看次数

Angular - 删除我在表单组中添加的最后一个数组

在我的NgOnInit()上,我\xc2\xb4m 创建一个像这样的新表单。

\n\n
  ngOnInit(){\n    this.expenseForm = this.fb.group({\n      type: \'\',\n      expenses: this.fb.array([this.buildExpense()])\n    })\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我有一个名为type的,它在我的对象上以空开头,还有一个名为expenses的键

\n\n

每次用户单击按钮时,这些费用键都会收到一个数组。

\n\n
  buildExpense(): FormGroup {\n    return this.fb.group({\n      description: \'\',\n      quantity: \'\',\n      price: \'\'\n    })\n  }\n\n  addExpense(): void {\n    this.expenses.push(this.buildExpense())\n  }\n
Run Code Online (Sandbox Code Playgroud)\n\n

网页

\n\n
  <button class="btn btn-outline-primary add" type="button" (click)="addExpense()">Add Expense</button>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的目标是删除表单组中添加的最后一个数组

\n

arrays angular angular-reactive-forms formgroups

1
推荐指数
1
解决办法
2456
查看次数

读取 Angular Reactive Form 中的复选框 FormControl 值

我有以下代码

if (this.myForm.value['isDefault'] === true)
Run Code Online (Sandbox Code Playgroud)

其中 isDefault 是复选框 FormControl。现在,如果选中该复选框,我期望 this.myForm.value['isDefault'] 结果为 true。当我警告这一点时,它确实显示为 true,但这种比较不会导致 true。

javascript typescript angular angular-reactive-forms

1
推荐指数
1
解决办法
1万
查看次数

Angular 10 - 无法绑定到“formGroup”,因为它不是“form”的已知属性

我已经有一个正在运行的 Angular 应用程序,因为有扩展的功能,我必须为应用程序实现路由和登录页面。以前没有路由,作为路由的一部分,我添加了以下代码。

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'
import { HttpClientModule } from '@angular/common/http';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { EditorModule } from '@tinymce/tinymce-angular';
import { AngularEditorModule } from '@kolkov/angular-editor';
import { NgxUiLoaderModule } from 'ngx-ui-loader';
import { AppRoutingModule } from './app-routing.module';

@NgModule({
    declarations: [
        AppComponent
    ],
    imports: [
        BrowserModule,
        FormsModule, …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms

1
推荐指数
2
解决办法
6137
查看次数

如何访问复杂嵌套 FormGroup 的属性

我正在尝试在 Angular 中学习反应式形式。我能够写入所有属性,但麻木、替代、字母和文本。

**COMPONENT.TS**

createForm() {
    this.userForm = this.fb.group({
      fname: ['', [Validators.required]],
      lname: ['', [Validators.required]],
      email: ['', [Validators.email, Validators.required]],
      facility: ['', [Validators.required]],
      position: [''],
      test: this.fb.group({
        name: [''],
        id: [''],
        date: [''],
        scored: [''],
        wrong: [''],
        duration: [''],
        answers: this.fb.array ([
          this.fb.group({
            numb: [''],
            alts: this.fb.group({
              letter: this.fb.array([]),
              text: this.fb.array([])
            })
          })
        ])
      })
    })
  }

  get answerArray() {
    return this.userForm.get("answers") as FormArray;
  }
Run Code Online (Sandbox Code Playgroud)
**COMPONENT.HTML**

  <form [formGroup]="userForm">
    <div formGroupName="test">
      <div formArrayName="answers">
        <div *ngFor="let ans of answerArray.controls; let i = index"> …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms

1
推荐指数
1
解决办法
62
查看次数