Javascript 修改Angular 4输入框的模型值
我试图修改Angular 4的输入框模型,这样,如果用户在框中输入,比如说23,框中应该显示23% 在(输入)或(更改)等事件中访问模型值后,我尝试将Javascript 修改Angular 4输入框的模型值,javascript,angular,angular2-directives,Javascript,Angular,Angular2 Directives,我试图修改Angular 4的输入框模型,这样,如果用户在框中输入,比如说23,框中应该显示23% 在(输入)或(更改)等事件中访问模型值后,我尝试将%附加到模型值。然而,这完全改变了模型。我想要的是角度模型变量仍然应该包含23,但应该显示23% 有没有什么方法可以让我围绕这一点制定一个指令。有什么建议或链接吗?这是一种有点老套的方式,但你可以这样做: <input #input1 value="{{title}}%" (keydown)=setModel(input1.value)>
%
附加到模型值。然而,这完全改变了模型。我想要的是角度模型变量仍然应该包含23,但应该显示23%
有没有什么方法可以让我围绕这一点制定一个指令。有什么建议或链接吗?这是一种有点老套的方式,但你可以这样做:
<input #input1 value="{{title}}%" (keydown)=setModel(input1.value)>
value=“{{title}}%”
将采用title
值,并将在末尾添加%
。您可以使用setModel
方法设置新值,但在设置之前,您需要删除所有%
字符,如下所示:this.title=val.split('%').join('')代码>由于您试图更改组件显示值的方式,因此应使用指令,而不是更改模型中的实际值。换句话说,这里需要一个输入掩码。您可以使用现有软件包之一(例如)或编写自己的指令。您可以创建一个具有两个值的组件:一个是绑定值,另一个是显示值。组件看起来有点像这样:
@Component({
selector: 'hello-world',
template: `
<input type="text" [(ngModel)]="display" (keyup)="updateInput($event)" placeholder="Enter a name here">
<hr>
<h1>Input: {{input}}</h1>
`
})
export class HelloWorld {
@Input() input = 0;
@Output() inputChange = new EventEmitter();
display;
ngOnInit() {
this.display = `${this.input}%`
}
updateInput(evt) {
this.input = this.display.replace(/[^0-9.]/g, "");
this.display = `${this.input}%`;
this.inputChange.emit(this.input);
}
}
@组件({
选择器:“你好,世界”,
模板:`
输入:{{Input}
`
})
导出类HelloWorld{
@Input()输入=0;
@Output()inputChange=neweventemitter();
展示;
恩戈尼尼特(){
this.display=`${this.input}%`
}
更新输入(evt){
this.input=this.display.replace(/[^0-9.]/g,”);
this.display=`${this.input}%`;
this.inputChange.emit(this.input);
}
}
您可以像这样绑定到组件:
<hello-world [(input)]="myVar"></hello-world>
我也希望在这张图片中使用ngModel,因为我的一些输入框将动态填充值
属性在这里做同样的事情,它显示标题
值,标题值在按键
事件中更新。它实际上与ngModel做的事情相同,我知道我必须使用指令来实现这一点,但问题是如何操作角度模型。在AngularJS中是否有类似ngModelCtrl的替代方法?如果您使用反应式表单API显式创建模型对象,例如formModel:FormGroup=new FormGroup(…)代码>指定要添加到模型中的表单字段。然后,您可以只为模型上的特定字段分配一个值:this.myFormModel.value.customer=“Mary”代码>
<hello-world [(input)]="myVar"></hello-world>