Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Formbuilder与Angular类中的列表绑定,需要多个类成员和验证器_Angular_Typescript_Angular Material - Fatal编程技术网

Formbuilder与Angular类中的列表绑定,需要多个类成员和验证器

Formbuilder与Angular类中的列表绑定,需要多个类成员和验证器,angular,typescript,angular-material,Angular,Typescript,Angular Material,如何将Google Angular Materials列表与FormBuilder绑定?我们有下面的类,并尝试使用反应式formBuilder。 我们知道如何使用NgModel绑定到数据类,但希望绑定到实际的formbuilder。 使用mat选择列表执行此操作的过程是什么 class product{ productId: number; productCode: string; productDescription private formBuilder: For

如何将Google Angular Materials列表与FormBuilder绑定?我们有下面的类,并尝试使用反应式formBuilder。 我们知道如何使用NgModel绑定到数据类,但希望绑定到实际的formbuilder。 使用mat选择列表执行此操作的过程是什么

class product{
    productId: number;
    productCode: string;
    productDescription


private formBuilder: FormBuilder,  ) {
    products: this.fb.array([])
}
还需要以下验证要求

'product': this.formBuilder.group({
  'productId': [null, [Validators.required]],
  'productCode': [null, [Validators.required, Validators.maxLength(50)]],
 'productDescription': [null, [Validators.required, Validators.maxLength(255)]]
})


<mat-selection-list #productList class = "selectionlist" [(ngModel)]="selectedOptions" (selectionChange)="productChangeEvent($event,productList?.selectedOptions.selected)">
    <mat-list-option *ngFor="let product of products">
    {{product.productDescription}}
    </mat-list-option>
</mat-selection-list>
“产品”:this.formBuilder.group({
“productId:[null,[Validators.required]],
“productCode:[null,[Validators.required,Validators.maxLength(50)],
'productDescription':[null,[Validators.required,Validators.maxLength(255)]]
})
{{product.productDescription}
这是一个多选表单


如果您正试图对此进行研究,

您可以参考以下示例。 在您的.ts文件中

testForm: FormGroup;
animals: { name: string; sound: string; }[];

constructor(private fb: FormBuilder){
this.testForm = this.fb.group({
  requests: [null]
});
 this.animals = [
  { name: 'Dog', sound: 'Woof!' },
  { name: 'Cat', sound: 'Meow!' },
  { name: 'Cow', sound: 'Moo!' },
  { name: 'Fox', sound: 'Wa-pa-pa-pa-pa-pa-pow!' },
];
}
 onChange() {
console.log(this.testForm.value.requests);
}
在Html文件上

<form [formGroup]="testForm">
  <mat-form-field>
    <mat-label>Favorite animal</mat-label>
    <mat-select formControlName="requests" required (ngModelChange)="onChange()">
      <mat-option>--</mat-option>
      <mat-option *ngFor="let animal of animals" [value]="animal">
        {{animal.name}}
      </mat-option>
    </mat-select>
   </mat-form-field>
</form>

对于表单验证,您需要在this.testForm=this.fb.group({requests:[null,Validators.required]//像这样})中传递验证;我想数据将来自绑定到下拉列表中的服务,所以,您最好对此下拉列表应用所需的验证。您需要分别为每个表单字段指定验证。对于一个字段上的多个验证,请使用Validators.Compose[]您能详细解释一下您到底想要什么吗?绑定到下拉列表通常不会遵循您的要求。因为,当我们从用户处获取输入并根据我们的数据库表进行验证时,所有这些验证都是必需的。