相关疑难解决方法(0)

Angular 2使用嵌套组件创建反应形式

我的要求是我需要创建一个带有嵌套组件的表单.我正在为每个表单字段创建组件意味着对于文本框会有一个组件,对于单选按钮会有另外一个组件就像明智一样.
<form [formGroup]="myForm">
<textbox-component></textbox-component>
<radioButton-component></radioButton-component>
</form>

我想使用Reactive表单来创建这个表单,因为我希望我的html不受影响,只通过打字稿进行表单验证.

但是我找不到任何解决方案我们如何能够将反应形式与组件嵌套.

typescript angular2-forms angular

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

没有用于表单控件的值访问器

我正在使用Angular2-rc5,我目前在登录页面上收到错误.我正在尝试创建一个表单,但是控制台抛出异常告诉我formcontroll即使我在init上创建它也无法找到我的s.知道我为什么会收到这个错误吗?

登录组件

import { Component, OnInit } from '@angular/core';
import { FormGroup, FormControl, FormBuilder, Validators } from '@angular/forms';
import { LoginService } from './login.service';
import { User } from '../../models/user';

@Component({
    selector: 'login',
    providers: [LoginService],
    templateUrl: './login.component.html',
    styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {
    private loginForm: FormGroup; // our model driven form
    private submitted: boolean; // keep track on whether form is submitted
    private events: any[] = []; // use later to display form changes

    constructor(private …
Run Code Online (Sandbox Code Playgroud)

javascript forms form-control angular

17
推荐指数
9
解决办法
5万
查看次数

Angular 2 - 大规模申请表格的处理

在我工作的公司,我们正在开发一个具有多种形式的大型应用程序,用户需要填写这些应用程序才能注册我们的程序.当所有问题都得到回答后,用户就会到达一个部分,该部分总结了所有答案,突出显示无效答案,并让用户有机会重新访问上述任何一个表格步骤并修改他们的答案.该逻辑将在一系列顶级部分中重复,每个部分具有多个步骤/页面和摘要页面.

为实现这一目标,我们为每个单独的表单步骤(它们是"个人详细信息"或"资格"等类别)创建了一个组件,以及它们各自的路由和摘要页面的组件.

为了尽可能保持DRY,我们开始创建一个"主"服务,其中包含所有不同表单步骤(值,有效性等)的信息.

import { Injectable } from '@angular/core';
import { Validators } from '@angular/forms';
import { ValidationService } from '../components/validation/index';

@Injectable()
export class FormControlsService {
  static getFormControls() {
    return [
      {
        name: 'personalDetailsForm$',
        groups: {
          name$: [
            {
              name: 'firstname$',
              validations: [
                Validators.required,
                Validators.minLength(2)
              ]
            },
            {
              name: 'lastname$',
              validations: [
                Validators.required,
                Validators.minLength(2)
              ]
            }
          ],
          gender$: [
            {
              name: 'gender$',
              validations: [
                Validators.required
              ]
            }
          ],
          address$: [
            {
              name: 'streetaddress$',
              validations: [
                Validators.required
              ]
            },
            {
              name: …
Run Code Online (Sandbox Code Playgroud)

architecture forms angular

16
推荐指数
2
解决办法
1925
查看次数

如何使用当前的Form API将父组件的FormGroup传递给其子组件

我想将父组件的FormGroup传递给它的子组件,以便使用子组件显示错误消息

鉴于以下父母

parent.cmponent.ts

import { Component, OnInit } from '@angular/core'
import {
    REACTIVE_FORM_DIRECTIVES, AbstractControl, FormBuilder, FormControl,
    FormGroup, Validators
} from '@angular/forms'

@Component(
    {
      moduleId: module.id,
      selector: 'parent-cmp',
      templateUrl: 'language.component.html',
      styleUrls: ['language.component.css'],
      directives: [
        ErrorMessagesComponent]
    })
export class ParentCmp implements OnInit {
  form: FormGroup;
  first: AbstractControl;
  second: AbstractControl;

  constructor(private _fb: FormBuilder) {
    this.first =
        new FormControl('');
    this.second = new FormControl('')
  }

  ngOnInit() {
    this.form = this._fb.group(
        {
          'first': this.first,
          'second': this.second
        });
}
}
Run Code Online (Sandbox Code Playgroud)

我现在想将表单:FormGroup变量传递给下面的子组件

错误message.component.ts

import { Component, OnInit, Input …
Run Code Online (Sandbox Code Playgroud)

javascript angular2-forms typescript1.8 angular

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

ANGULAR 4 Base64上传组件

我是Angular的新手.我正在使用Angular 4.其中需要将base64 Image作为模型成员之一发送到web api.是否有一个Angular组件或指令将base64绑定到所述模型?

感谢并感谢您的帮助.

upload base64 components directive angular

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

使用 formArray 进行角度拖放

我有2个数组。我正在实现一个 Angular 拖放,我想使用 FormArray 来保存元素被放入的数组。

问题是我无法将 formcontrol 应用于 div,因为它给出了错误

错误:没有名称为“语言”的表单控件的值访问器

这是html

      <div>

        <div class="example-container">
          <h2>Selected Languages</h2>
          <div
          cdkDropList
          #todoList="cdkDropList"
          [cdkDropListData]="anotherarray"
          [cdkDropListConnectedTo]="[doneList]"
          class="example-list"
          (cdkDropListDropped)="drop($event)"
           formControlName="language">
          <div class="list-group-item list-group-item-action " *ngFor="let item of anotherarray" cdkDrag>
            {{item}}
          </div>
        </div>
      </div>

      <div class="example-container">
        <h2>Available Languages</h2>

        <div
        cdkDropList
        #doneList="cdkDropList"
        [cdkDropListData]="testingarray"
        [cdkDropListConnectedTo]="[todoList]"
        class="example-list"
        (cdkDropListDropped)="drop($event)">
        <div class="list-group-item list-group-item-action " *ngFor="let item of testingarray" cdkDrag>{{item}}</div>
      </div>
      </div>

      </div>

      <button type="submit" class="btn btn-primary my-2" translate>saveButtonLabel
        <fa-icon *ngIf="saveIcon" [icon]="saveIcon" [spin]="saveIcon.iconName === 'spinner'"></fa-icon>
      </button>
    </form>
Run Code Online (Sandbox Code Playgroud)

angular-material angular-dragdrop angulardraganddroplists angular angular-cdk

6
推荐指数
2
解决办法
6851
查看次数

名称为“eventGraphicAttachment”的表单控件没有值访问器

我正在开发一个 Angular 项目,在构建项目时遇到一些错误。我正在使用材料设计。但我不确定如何解决这个问题。请看一下并帮助我。

这是组件代码。

export class TestComponent {
    ...
    public createEventGroup: FormGroup

    public constructor(
        ...
    ) {
        this.createEventGroup = new FormGroup({
            eventName: new FormControl(),
            eventDescription: new FormControl(),
            eventGraphicAttachment: new FormControl(''),
            ...
        });
    }
...
Run Code Online (Sandbox Code Playgroud)

这是 HTML 代码

<mat-form-field class="event-graphic">
  <mat-label>Event Graphic</mat-label>
  <ngx-mat-file-input placeholder="Basic Input" formControlName="eventGraphicAttachment">
  </ngx-mat-file-input>
  <mat-icon matSuffix>folder</mat-icon>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

这是错误日志

core.js:6210 ERROR Error: No value accessor for form control with name: 'eventGraphicAttachment'
    at _throwError (forms.js:1732)
    at setUpControl (forms.js:1506)
    at FormGroupDirective.addControl (forms.js:5253)
    at FormControlName._setUpControl (forms.js:5835)
    at FormControlName.ngOnChanges (forms.js:5780)
    at FormControlName.rememberChangeHistoryAndInvokeOnChangesHook (core.js:1520) …
Run Code Online (Sandbox Code Playgroud)

angular-material angular

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

Angular FormArray:找不到带有路径的控件

我试图建立一个Angular Reactive表单,其中一个帐户可以添加许多学生。

该表格似乎有效。当您点击添加学生时,它会创建一个新学生,但您会在控制台上看到提示

错误错误:找不到路径为'studentsArray-> 1-> firstName的控件

以此类推。

app.component.html

<form [formGroup]="accountForm">
<div>
    <input formControlName="firstName" placeholder="First name">
</div>
<div>
    <input formControlName="lastName" placeholder="Last name">
</div>
<div>
    <input formControlName="phone" placeholder="Phone">
</div>
<div>
    <input formControlName="email" placeholder="Email">
</div>
<button (click)="addStudent()" *ngIf="!showStudentForm">Add Student</button>
<div formArrayName="studentsArray">
    <div *ngFor="let student of studentsArray.controls; let i = index" [formGroupName]="i">
        <input formControlName="firstName" placeholder="First Name">
        <input formControlName="lastName" placeholder="Last Name">
        <input formControlName="dob" placeholder="Date of Birth">
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

app.component.ts

import { Component, Input, OnChanges } from '@angular/core';
import { FormGroup, FormControl, Validators, FormArray, FormBuilder } …
Run Code Online (Sandbox Code Playgroud)

angular angular-reactive-forms formarray formgroups

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

使用反应形式的 ionic 5 和 Angular 9 出现错误“没有名称的表单控件的值访问器”

我正在使用 ionic 5 和 Angular 9。我正在尝试创建一个反应式表单,但出现错误“没有名称的表单控件的值访问器:'姓氏'”。

这是我的代码:

export class ModalComponent implements OnInit {

  public form: FormGroup;

  constructor(private modalController: ModalController,
              private formBuilder: FormBuilder) { }

  ngOnInit(): void {
    this.initForm();
  }

  public close(): void {
    // using the injected ModalController this page
    // can "dismiss" itself and optionally pass back data
    this.modalController.dismiss({
      'dismissed': true
    });
  }

  public initForm(): void {
    this.form = this.formBuilder.group({
      firstname: ['', Validators.required],
      lastname: ['', Validators.required]
    });
  }

  logForm(){
    console.log(this.form.value)
  }
}
Run Code Online (Sandbox Code Playgroud)
<form [formGroup]="form" (ngSubmit)="logForm()" novalidate>
    <ion-item>
      <ion-label>Last name</ion-label> …
Run Code Online (Sandbox Code Playgroud)

ionic-framework reactive-forms angular angular9 ionic5

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

名称为“recaptchaReactive”的表单控件没有值访问器

从这个例子开始工作https://stackblitz.com/edit/ng-recaptcha-example?file=src%2Fapp%2Fapp.component.ts

可能与:Angular4 - 没有用于表单控制的值访问器

在我的表格中,我有以下内容。

<form [formGroup]="loginForm" (ngSubmit)="onSubmit()">
    <mat-form-field class="example-full-width">
       <input matInput placeholder="{{'Email' | translate}}" formControlName="email"                                        [errorStateMatcher]="matcher">

        <mat-error *ngIf="loginForm.controls['email'].hasError('email') || loginForm.controls['email'].hasError('required')">
             {{"Enter a valid email address" | translate}}
        </mat-error>
    </mat-form-field>
    <re-captcha formControlName="recaptchaReactive"></re-captcha>
</form>
Run Code Online (Sandbox Code Playgroud)

电子邮件字段(以及我省略的密码)可以使用。在组件中,我有以下内容。

loginForm = new FormGroup({
    email: new FormControl('', [
        Validators.email,
        Validators.required
    ]),
    password: new FormControl('', [
        Validators.required,
        Validators.minLength(8)
    ]),
    recaptchaReactive: new FormControl(null, Validators.required)
});
Run Code Online (Sandbox Code Playgroud)

angular

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