如何使用 Angular 反应形式根据选择的值将表单字段的值设置到另一个字段中?
How can I set the value of a form field basing on the value selected into another field using Angular rective form?
我是 Angular 的新手,我正在使用 PrimeNG 开发一个应用程序。
我遇到了以下问题,但找不到解决方案。基本上当用户用一个值填充一个特定的字段时,另一个字段必须用一个特定的值填充。
我尽量详细解释一下。
我有这 2 个字段:
其中 Referent 字段代表一个人,Ruole referente 字段代表 selected 人的角色。
例如,我可以将 Mario Rossi 设置为 Referente 字段的值:
如您所见,Referente 字段基于基于可能用户列表的自动完成输入表单。对于自动完成中使用的此用户列表中的每个用户,还有特定的用户角色信息。
这是我对这两个字段的 HTML 代码:
<div class="row">
<div class="col-2">
<p>Referente</p>
</div>
<div class="col-10">
<!--<input id="referente" formControlName="referente" type="text" pInputText />-->
<p-autoComplete id="referente"
formControlName="referente"
[suggestions]="filteredPeople"
(completeMethod)="filterPeople($event)"
field="complete_name"
[dropdown]="true">
<ng-template let-person pTemplate="item">
<div class="people-item">
<!--<img src="assets/showcase/images/demo/flag/flag_placeholder.png" [class]="'flag flag-' + person.avatar.toLowerCase()" />-->
<img src="assets/img/people/{{person.avatar}}" [class]="'flag flag-' + person.avatar.toLowerCase()" />
<span>{{person.complete_name}}</span>
</div>
</ng-template>
</p-autoComplete>
</div>
</div>
<div class="row">
<div class="col-2">
<p>Ruolo referente</p>
</div>
<div class="col-10">
<input id="ruoloReferente" formControlName="ruoloReferente" type="text" pInputText value= />
</div>
</div>
如前所述,这是一种反应形式,因此目前第二个 Ruolo Referente 字段正在使用此 formControlName="ruoloReferente"在表单控件中设置值。我希望在 select 用户进入 Referente 字段后使用与 selected 用户相关的正确信息。
基本上,当我 select 列表中的用户时,它使用 **{{person.complete_name}} 相关对象字段来显示名称。此对象还包含其他字段 person.role,必须用于确定其他字段内容的价值。
我怎样才能正确地实现这个行为?我错过了什么?
您可以在第一个 select 框的更改事件期间设置表单控件值。所以我创建了一个简单的 stackblitz,您可以在其中清楚地了解它。
你可以找到 stackblitz link here.
解释:
在上面的stack blitz中,会有两个select框。如果您 select 第一个 select 中的某个值,第二个 select 中将填充相同的值。
app.component.html
<select class="custom-select" (change)="changeCity($event)" formControlName="cityName">
<option value="">Choose your city</option>
<option *ngFor="let city of City" [ngValue]="city">{{city}}</option>
</select>
如您所见,这里有一个更改事件,在该更改事件期间,我将在打字稿中设置第二个 select 值。
app.component.ts
changeCity(e) {
this.registrationForm.get('cityNameDup').setValue(e.target.value);
}
希望这能解决您的问题。
我是 Angular 的新手,我正在使用 PrimeNG 开发一个应用程序。
我遇到了以下问题,但找不到解决方案。基本上当用户用一个值填充一个特定的字段时,另一个字段必须用一个特定的值填充。
我尽量详细解释一下。
我有这 2 个字段:
其中 Referent 字段代表一个人,Ruole referente 字段代表 selected 人的角色。
例如,我可以将 Mario Rossi 设置为 Referente 字段的值:
如您所见,Referente 字段基于基于可能用户列表的自动完成输入表单。对于自动完成中使用的此用户列表中的每个用户,还有特定的用户角色信息。
这是我对这两个字段的 HTML 代码:
<div class="row">
<div class="col-2">
<p>Referente</p>
</div>
<div class="col-10">
<!--<input id="referente" formControlName="referente" type="text" pInputText />-->
<p-autoComplete id="referente"
formControlName="referente"
[suggestions]="filteredPeople"
(completeMethod)="filterPeople($event)"
field="complete_name"
[dropdown]="true">
<ng-template let-person pTemplate="item">
<div class="people-item">
<!--<img src="assets/showcase/images/demo/flag/flag_placeholder.png" [class]="'flag flag-' + person.avatar.toLowerCase()" />-->
<img src="assets/img/people/{{person.avatar}}" [class]="'flag flag-' + person.avatar.toLowerCase()" />
<span>{{person.complete_name}}</span>
</div>
</ng-template>
</p-autoComplete>
</div>
</div>
<div class="row">
<div class="col-2">
<p>Ruolo referente</p>
</div>
<div class="col-10">
<input id="ruoloReferente" formControlName="ruoloReferente" type="text" pInputText value= />
</div>
</div>
如前所述,这是一种反应形式,因此目前第二个 Ruolo Referente 字段正在使用此 formControlName="ruoloReferente"在表单控件中设置值。我希望在 select 用户进入 Referente 字段后使用与 selected 用户相关的正确信息。
基本上,当我 select 列表中的用户时,它使用 **{{person.complete_name}} 相关对象字段来显示名称。此对象还包含其他字段 person.role,必须用于确定其他字段内容的价值。
我怎样才能正确地实现这个行为?我错过了什么?
您可以在第一个 select 框的更改事件期间设置表单控件值。所以我创建了一个简单的 stackblitz,您可以在其中清楚地了解它。
你可以找到 stackblitz link here.
解释:
在上面的stack blitz中,会有两个select框。如果您 select 第一个 select 中的某个值,第二个 select 中将填充相同的值。
app.component.html
<select class="custom-select" (change)="changeCity($event)" formControlName="cityName">
<option value="">Choose your city</option>
<option *ngFor="let city of City" [ngValue]="city">{{city}}</option>
</select>
如您所见,这里有一个更改事件,在该更改事件期间,我将在打字稿中设置第二个 select 值。
app.component.ts
changeCity(e) {
this.registrationForm.get('cityNameDup').setValue(e.target.value);
}
希望这能解决您的问题。