在angular2中使用解析器和格式化程序的方法是什么?
在angular1中,可以使用ngmodelcontroller进行这样的操作:
//model -> view
ngModelController.$formatters.push(function(modelValue) {
return modelValue.toUpperCase();
});
//view -> model
ngModelController.$parsers.push(function(viewValue) {
return viewValue.toLowerCase();
});
你能给我举一个用安格拉2的例子吗?
upd:管道类似于angular1中的过滤器,但我不寻找过滤器,而是寻找ngmodel的解析器和格式化程序。所以“管道”不是正确的答案。
最佳答案
你能给我举一个用安格拉2的例子吗?
a.)模型->视图
使用Pipes
TS:
myString: string = "ABCDEFGH";
模板:
{{myString | lowercase}}
输出:
abcdefgh
直接使用转换
模板:
Below Input field will have lowercase string as value
<input type="text" [value]="myString.toLowerCase()">
I'm also lowercase: {{myString.toLowerCase()}}
输出:
Input field with value "abcdefgh"
I'm also lowercase: abcdefgh
使用getter/setter
TS:
myString: string = "ABCDEFGH";
get stillMyString() {
return this.myString.toLowerCase();
}
set stillMyString(v) {
this.myString = v;
}
模板:
{{stillMyString}}
输出:
abcdefgh
使用Directives
使用ControlValueAccessor
或使用上述任一组合
b.)视图->模型
使用Output/Events
模板:
Below Input field will get lowercase string as value but will store uppercase string
<input type="text" [value]="myString.toLowerCase()" (change)="myString = $event.toUpperCase()">
I'm give uppercase values automatically: {{myString}}
输出:
Input field with initial value "abcdefgh"
I'm given uppercase values automatically: ABCDEFGH
使用setter/getter
TS:
myString: string = "ABCDEFGH";
get stillMyString() {
return this.myString;
}
set stillMyString(s) {
this.myString = s.toUpperCase();
}
模板:
Below Input field will get lowercase string as value but will store uppercase string
<input type="text" [value]="stillMyString.toLowerCase()" (change)="myString = $event">
Now I'm Uppercase: {{stillMyString}}
输出:
Input field with initial value "abcdefgh"
I'm given uppercase values automatically: ABCDEFGH
和/或以上方法和我现在想不起来的任何其他方法的组合。
结束
正如你所看到的,有多种方法可以做同样的事情,这取决于你的需要和选择使用其中的任何一种。
验证不是转换的问题,但是您可以通过改进
1>
并在输入字段上使用2>
来完成它。我可以在这里向您展示
3>
,这里有太多的4>
转换,因为5>
就是这样做的,1>
,2>
。希望有帮助:)
关于angular - Angular2中的解析器和格式化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39457941/