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)})

当我在输入表单中使用
[(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;
        }
    }

}

非常感谢。只需在我的设置器中输入一个临时值。作品那不行。我有振动元素的例子。我需要在对象实例上更改它。