typescript – Angular2使用[(ngModel)]和[ngModelOptions] =“{standalone:true}”链接到对模型属性的引用

前端之家收集整理的这篇文章主要介绍了typescript – Angular2使用[(ngModel)]和[ngModelOptions] =“{standalone:true}”链接到对模型属性的引用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我有一个类型为Mailtype的打字稿对象,如下所示:
export class Mailtype {
  constructor(
    public name?: string,public locale?: string,public email?: string,public properties? : Property[]
  ) {  }
}

其“属性”字段是属性类型的数组:

export class Property {
  constructor(
    public name?: string,public type?: string,public example?: string,public required?: boolean,public masked?: boolean
  ) {  }
}

现在在我的组件中我有一个Mailtype对象,html有一个表单元素,用于编辑和添加到Mailtype的属性数组:

<form>
   <tr *ngFor="let property of model.properties; let i=index">
          <td>
            <input type="text" [(ngModel)]="property.name" required>
          </td>
  </tr>
  <button (click)="onAddProperty()">Add property</button>
</form>

零件:

export class MailtypeComponent {
  model : Mailtype;
  constructor() {
    this.model = new Mailtype('','',[]);
    this.model.properties.push(new Property());
  }

  onAddProperty() {
    this.model.properties.push(new Property());
  }
}

我想知道我是否不允许使用[(ngModel)]链接到数组中数组元素的引用“属性”,特别是在我迭代数组的同时?因为它会为以上代码抛出以下错误

ORIGINAL EXCEPTION: If ngModel is used within a form tag,either the name attribute must be set
                      or the form control must be defined as 'standalone' in ngModelOptions.

                      Example 1: <input [(ngModel)]="person.firstName" name="first">
                      Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">

所以它建议我使用[ngModelOptions] =“{standalone:true}”或者在html中添加名称字段.在这种情况下看起来像[ngModelOptions] =“{standalone:true}”.为什么独立:true实际意味着因为我找不到任何关于它的文档?

使用< form>时使用@ angular / forms标记它会自动创建一个FormGroup.

对于每个包含的ngModel标记的< input>它将创建一个FormControl并将其添加到上面创建的FormGroup中;此FormControl将使用属性名称命名为FormGroup.

例:

<form #f="ngForm">
    <input type="text" [(ngModel)]="firstFieldVariable" name="firstField">
    <span>{{ f.controls['firstField']?.value }}</span>
</form>

说到这里,你问题的答案如下.

当您将其标记为独立时:如果不会发生这种情况(它将不会添加到FormGroup中).

参考:https://github.com/angular/angular/issues/9230#issuecomment-228116474

猜你在找的Angularjs相关文章