angular - 如何以反应形式将幻灯片值同步到输入字段中
问题描述
我现在有一个问题,我不知道如何将幻灯片值同步到反应形式的输入字段中。
我显示我的代码:
<div fxLayout="row">
<mat-slider class="slider" color="primary" max="1" min="0" step="0.1" thumb-label="true"
[(ngModel)]="dataService.adress"
[disabled]="!dsearchDataService.sendAdress"
></mat-slider>
<form [formGroup]="addressForm">
<mat-form-field class="input">
<input matInput type="number" step="0.1" max="1" min="0" maxlength="3"
[(ngModel)]="dataService.address"
formControlName="address">
<mat-error *ngIf="address.invalid">Ivalid Value</mat-error>
</mat-form-field>
</form>
</div>
现在您看到了,在更改代码之前的这种反应形式中,我使用 ngModel 在幻灯片和输入字段之间绑定了两个值。
但在反应形式中,应该删除 ngModel 而不是 formControlName。
在 ts 文件中:
public ngOnInit(): void{
this.addressForm = this.fb.group({
address: new FormControl({value: this.dataService.address, disabled: !this.dataService.sendAddress}, [Validators.pattern('/^[0-9]*$/'])
});
}
我的问题是,如果幻灯片值更改,现在我想将幻灯片值同步到输入字段中。
有什么解决办法??
解决方案
我解决了这个问题:
就我而言,我使用的是反应式表单。
在 *.html 文件中:
<mat-form-field>
<input
matInput
type="text"
formControlName="field_name">
</mat-form-field>
...
<mat-slider
class="slider"
[max]="slider.max"
[min]="slider.min"
[step]="slider.step"
[thumbLabel]="slider.thumbLabel"
[color]="slider.color"
[value]="slider_value"
(change)="onSliderChange($event,'slider_name')"
(input)="onSliderChange($event,'slider_name')">
</mat-slider>
在 *.ts 文件中:
import { Component, OnDestroy, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
...
@Component({
selector: 'app-something-create',
templateUrl: './something-create.component.html',
styleUrls: ['./something-create.component.css']
})
export class SomethingCreateComponent implements OnInit, OnDestroy {
form: FormGroup;
slider: MySlider = new MySlider();
slider_value: number;
ngOnInit(): void {
this.form = new FormGroup({'field_name': new FormControl({value: this.slider_value}, {})}
}
...
/**
* @brief On Slider Change update the value in the Measurement and in the form to be displayed
*/
onSliderChange($event, value_: string){
/* You can extend this switch to use more than one slider, giving them different names */
switch(value_){
case 'slider_name':
this.slider_value = $event.value;
this.form.get('field_name').setValue(this.slider_value);
break;
}
}
ngOnDestroy(): void {
}
}
/*
* @brief General class to initialize sliders
*/
class Slider {
max: number;
min: number;
step: number;
thumbLabel: boolean;
color: string;
}
/*
* @brief Custom initialized slider
*/
class MySlider extends Slider {
max = 10;
min = 1;
step = 0.1;
thumbLabel = false;
color="primary";
}
让我知道这是否适合您。快乐编码!
推荐阅读
- c++ - 关于 C++ 中正确值引用的问题
- regex - 有没有办法使用正则表达式根据特定的前导字母从字符串中捕获数字?
- javascript - 代码正在工作,但我没有得到想要的输出
- java - 使用 MUX 为所有传入请求创建另一个自定义打包程序。我的传出请求没有问题
- python - Nan失去了keras Resnet-50
- r - 寻找匹配索引的泛化过程 - 子集上的可能错误
- javascript - 不理解这种在 2 个字符串之间查找子序列的迭代方法
- angular - 自动验证角点网核心模板应用程序的最佳方法
- xamarin.forms - 如何将 WidgetKit 扩展嵌入 Xamarin.forms?
- javascript - Order Model 或 ProductService 的单一职责?