gpt4 book ai didi

angular - 如何使用 react 形式设置 Angular Material Chip Control

转载 作者:行者123 更新时间:2023-12-04 15:06:02 24 4
gpt4 key购买 nike

我有一个带有 Angular Material 的 Angular react 形式

对于我的所有控件,我添加了所需的验证器。

我不确定如何使用 react 形式正确设置芯片控制。

您在哪里设置 formControlName 以便触发所需的验证器?目前我将它设置在我猜是错误的输入字段上。

我只希望 courseIds 是带有类(class) ID 的逗号分隔字符串。

TS:

form: FormGroup;

ngOnInit() {
this.form = new FormGroup({
name: new FormControl("", [Validators.required]),
courseIds: new FormControl("", Validators.required)
});
}

HTML:
  <form [formGroup]="form" (ngSubmit)="submit()">

<mat-form-field>
<input matInput type="text" formControlName="name" placeholder="Name">
</mat-form-field>

<mat-form-field>
<mat-chip-list #chipList>
<mat-chip *ngFor="let cid of courseIds" (removed) = "...">
{{cid}}
</mat-chip>

<input matInput formControlName="courseIds"
[matChipInputFor]="chipList"
placeholder="Ids"
(matChipInputTokenEnd)="add($event)">
</mat-chip-list>
</mat-form-field>

....

<button type="submit">OK</button>
</form>

最佳答案

尝试设置 formControlName<mat-chip-list>等级。

在您的模板中,设置 ngFor循环 courseIds控制值

<mat-form-field>
<mat-chip-list #chipList formControlName="courseIds">
<mat-chip *ngFor="let cid of form.get('courseIds').value" (removed) = "...">
{{cid}}
</mat-chip>

<input matInput
[matChipInputFor]="chipList"
placeholder="Ids"
(matChipInputTokenEnd)="add($event)">
</mat-chip-list>
</mat-form-field>

然后在您的组件中,使用 courseIds 的初始值创建表单组。如果有,则使用空数组 [] (因为芯片显示的是数组而不是字符串)。在您的 add()remove()函数,添加和删除 courseIds 中的值分别控制值。

form: FormGroup;

ngOnInit() {
this.form = new FormGroup({
name: new FormControl("", [Validators.required]),
courseIds: new FormControl([], Validators.required)
});
}

add() {
...

// Add new input to courseIds control value
this.courseIds.value.push(value);

this.courseIds.updateValueAndValidity();
}

remove() {
...

// Remove element from control value array
this.courseIds.value.splice(index, 1); // where index = index of removed element

this.courseIds.updateValueAndValidity();
}

// use getter method to access courseIds control value easily
get courseIds() {
return this.form.get('courseIds');
}

关于angular - 如何使用 react 形式设置 Angular Material Chip Control,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56492325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com