Angular 未触发打字脚本设置程序
我有以下课程Angular 未触发打字脚本设置程序,angular,typescript,Angular,Typescript,我有以下课程 export class VibrationElement { private _amplitude: number; get amplitude(): number { return this._amplitude; } set amplitude(amplitude: number) { console.log("test"); if (this.validate(ampl
export class VibrationElement {
private _amplitude: number;
get amplitude(): number {
return this._amplitude;
}
set amplitude(amplitude: number) {
console.log("test");
if (this.validate(amplitude)) {
this._amplitude = amplitude;
}
}
}
在组件中定义该类的实例时:
export class VibrationPatternEditingComponent {
...
amplitudeChange(vibration: VibrationElement, newValue: any) {
vibration.amplitude = parseInt(newValue);
}
}
所以这里的问题是没有调用VibrationElement的setter(在控制台中没有“test”),但值还是会改变。但是我需要验证振幅上的一些约束,所以设置器是必要的
我也试过了
Object.assign(振动,{振幅:parseInt(newValue)})但是这也没有触发setter
当我在输入表单中使用[(ngModel)]=“振动.振幅”
时,设置器会被触发,但这里的问题是,输入是一个字符串。然后我不能在setter中转换它,因为setter当然会得到一个数字,但不知何故,当我在setter中记录振幅的类型时,它是一个字符串。我真的不明白。这里有人有答案吗?实际上,你可以将字符串
转换为数字
,如下所示:
export class VibrationElement {
private _amplitude: number;
get amplitude(): number {
return this._amplitude;
}
set amplitude(_amplitude) {
const amplitude = Number(_amplitude);
console.log("test");
if (this.validate(amplitude)) {
this._amplitude = amplitude;
}
}
}
非常感谢。只需在我的设置器中输入一个临时值。作品那不行。我有振动元素的例子。我需要在对象实例上更改它。