【发布时间】:2019-09-28 15:26:43
【问题描述】:
除了我不能编辑其中的任何mat-form-fields 之外,以下表单几乎完成了它应该做的事情。它们没有被禁用,只是无法编辑它们。
这是什么原因?
我看不出与 StackBlitz 上的 this example 有什么不同。
import {Component} from '@angular/core';
import {FormBuilder, FormGroup, FormArray, FormControl} from '@angular/forms';
@Component({
selector: 'form-field-label-example',
templateUrl: 'form-field-label-example.html',
styleUrls: ['form-field-label-example.css'],
})
export class FormFieldLabelExample {
public dataList = [
{name: 'Alice'},
{name: 'Bob'}
]
public form: FormGroup;
constructor(private _fb: FormBuilder) {
const formArray = this._fb.array([]);
for (const data of this.dataList) {
formArray.push(
this._fb.group({name: new FormControl(data.name)})
);
}
this.form = this._fb.group({
offers: formArray
});
}
}
<div>
<form [formGroup]="form">
<div formArrayName="offers" *ngFor="let data of form.controls.offers?.value; let i = index;">
<ng-container [formGroupName]="i">
<mat-form-field>
<input matInput placeholder="Name" formControlName="name">
</mat-form-field>
</ng-container>
</div>
</form>
<span *ngIf="form.dirty">DIRTY</span>
<mat-form-field>
<input matInput placeholder="Name">
</mat-form-field>
</div>
【问题讨论】:
-
奇怪...好像它们不是双向绑定。您可以取出 mat-form-field 和 matInput,这至少可以让您在表单上设置脏标志。这样做会给它带来与其他 stackblitz 相同的奇怪行为,它似乎一次只想要一个角色。
-
@pmiller3 我刚刚将我在问题中引用的第二个示例更改为使用
matInput和mat-form-field(example) - 它也在那里不起作用。我猜这是一个错误?
标签: angular typescript angular-material