javascript - 如何根据Angular中的其他选择字段设置另一个字段值?
问题描述
我有一个对象数组,比如说
const countries = [
{
"country": "Afghanistan",
"region": "Asia"
},
{
"country": "Albania",
"region": "Europe"
},
{
"country": "Algeria",
"region": "Africa"
}
];
我有 2 个输入字段,国家和地区。如果用户使用选择选项选择国家,我需要将我的区域字段自动设置为该对象的相应区域。
<div class="form-group stylingtext mt-3">
<label for="" class="pb-2">Movie Country</label>
<select
class="form-select"
aria-label="Default select example"
formControlName="movie_country"
>
<option
*ngFor="let country of countries"
[value]="country.country"
>
{{country.country}}
</option>
</select>
</div>
<div class="form-group stylingtext mt-3">
<label for="" class="pb-2">Movie Region</label>
<input
class="form-control rounded-5"
formControlName="movie_region"
required
>
</div>
我还尝试了 select 中的(更改)事件,并在区域输入区域中使用了 ngmodel。但它不起作用。谁能帮我这个?
例如:如果我在国家/地区选择“阿尔及利亚”,我想在区域输入区域中选择“非洲”。
解决方案
您可以尝试像这样观察国家/地区价值的变化:
private destroy$ = new Subject<void>();
ngOnInit(): void {
this.formGroup.controls.movie_country.valueChanges.pipe(
takeUntil(this.destroy$),
).subscribe(
country => this.formGroup.controls.movie_region.patchValue(country.region)
)
}
ngOnDestroy(): void {
this.destroy$.next();
this.destroy$.complete();
}
formGroup
FormGroup 控件的名称在哪里。并使用 subjectdestroy$
取消您的订阅。
推荐阅读
- sql - 通过 updated_at 和 creatd_at 之间的差异的活动记录子集
- sql-server - 可以在 SQL Server 中没有相应的 BEGIN TRAN 的情况下提交事务吗?
- docker - docker-compose 中的 Docker 容器无法通过主机名找到其他容器
- bash - 尝试在 bash 和 grep 中读取文件以获取子字符串,将该子字符串存储在数组中
- ibm-cloud-private - 用于在 IBM Cloud Private 上的微气候中构建内部循环的微服务构建器?
- python - AttributeError: 'dict' 对象没有属性 'to_csv' Google Analytics API Reporting V4
- ubuntu - cd .. 在 Makefile 中没有 ONESHELL 的情况下工作
- regex - 正则表达式如何识别具有数字的条目,同时忽略其他具有相同数字的条目
- r - 获取R中每一行的最后一个非零列名并创建一个单独的列
- angular - 无法分配给引用或变量(带有自定义组件的 ngModel)