【发布时间】:2017-08-08 19:56:40
【问题描述】:
我想使用 getter 和 setter 将输入值绑定到模型。通过这种方式,我可以在写入时防止和/或操纵输入的值。
例如,我想要输入框中的阻止数字。所以,如果写 'abc' 一切正常,那么如果我开始写一个数字,什么都不会发生(模型和输入的值)。问题是,使用下面的代码,我可以在输入框中写任何东西(但模型是正确的)。这意味着输入框的值并不能真正代表我的模型。
注意:除此问题之外的原因是我想使用我的模型来验证表单,例如防止特定字符。我不想使用响应式表单,因为我想将我的验证保存在我的模型而不是组件中。另外请注意,在实际场景中,我将有一个带有内部名称的 UserModel 类和带有验证的其他字段.
@Component({
selector: 'my-app',
template: `
<div>
<h2><input type="text" [(ngModel)]="name"> {{name}}</h2>
</div>
`,
})
export class App {
_name:string = 'ss';
constructor() {
}
// In real scenario those 2 methods are in a separate class UserModel
get name() {
return this._name;
}
set name() {
if ((new RegExp(/^[a-zA-Z]*$/).test(val))) {
this._name = val;
}
}
}
【问题讨论】:
-
有什么问题?
-
我更新了问题希望现在更清楚了。
-
请提供一个关于你想要什么的具体例子。你不想要的东西并没有太大帮助;-) 所以如果
this._name持有价值abc并且用户输入123但你不想允许数字,那么究竟应该发生什么? -
没什么,输入值应该保持abc。 (我在问题中添加了一个更好的例子)
标签: angularjs angular data-binding getter-setter