Ste*_*rov 18 angular2-forms angular
在Angular2 中进行解析器和格式化的方法是什么?
在Angular1中,可以使用ngModelController进行这样的操作:
//model -> view
ngModelController.$formatters.push(function(modelValue) {
return modelValue.toUpperCase();
});
//view -> model
ngModelController.$parsers.push(function(viewValue) {
return viewValue.toLowerCase();
});
Run Code Online (Sandbox Code Playgroud)
你能给我一个如何用Angular2做的例子吗?
UPD:管道类似于Angular1中的过滤器,但我不是寻找过滤器,而是针对ngModel的分析器和格式化器.所以"管道"不是正确的答案.
Ank*_*ngh 10
你能给我一个如何用Angular2做的例子吗?
1>使用管道TS:
myString: string = "ABCDEFGH";
Run Code Online (Sandbox Code Playgroud)
模板:
{{myString | lowercase}}
Run Code Online (Sandbox Code Playgroud)
输出:
abcdefgh
Run Code Online (Sandbox Code Playgroud)
2> 直接使用转换模板:
Below Input field will have lowercase string as value
<input type="text" [value]="myString.toLowerCase()">
I'm also lowercase: {{myString.toLowerCase()}}
Run Code Online (Sandbox Code Playgroud)
输出:
Input field with value "abcdefgh"
I'm also lowercase: abcdefgh
Run Code Online (Sandbox Code Playgroud)
3> 使用Getter/SetterTS:
myString: string = "ABCDEFGH";
get stillMyString() {
return this.myString.toLowerCase();
}
set stillMyString(v) {
this.myString = v;
}
Run Code Online (Sandbox Code Playgroud)
模板:
{{stillMyString}}
Run Code Online (Sandbox Code Playgroud)
输出:
abcdefgh
Run Code Online (Sandbox Code Playgroud)
4>使用指令5>使用ControlValueAccessor或使用上述任何一种的组合
1>使用输出/事件模板:
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}}
Run Code Online (Sandbox Code Playgroud)
输出:
Input field with initial value "abcdefgh"
I'm given uppercase values automatically: ABCDEFGH
Run Code Online (Sandbox Code Playgroud)
2> 使用Setter/GetterTS:
myString: string = "ABCDEFGH";
get stillMyString() {
return this.myString;
}
set stillMyString(s) {
this.myString = s.toUpperCase();
}
Run Code Online (Sandbox Code Playgroud)
模板:
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}}
Run Code Online (Sandbox Code Playgroud)
输出:
Input field with initial value "abcdefgh"
I'm given uppercase values automatically: ABCDEFGH
Run Code Online (Sandbox Code Playgroud)
和/或上述方法的组合以及我现在无法想到的任何其他方法.
正如您所看到的,有多种方法可以做同样的事情,这取决于您的需要和选择使用它们.
验证不是转换的关注点,但您可以通过改进getter/setters和使用FormControl输入字段来实现
我可以告诉你的tip of the iceberg这里,有这么多的model <> view转换,具有因那是什么Angular呢,Data Binding,one way or two way.
希望能帮助到你 :)
根据我的说法,在Angular 2中没有格式化器或解析器这样的概念,但你可以使用下面的代码实现它,它非常简单
在HTML中
<input type="text" [ngModel] = "formatter(ex)" (ngModelChange)="parser($event)">
Run Code Online (Sandbox Code Playgroud)
在代码中
export class Component{
data:string = 'data';
constructor(){}
formatter(value){
value = value.toUpperCase(); //manipulate the data according to your need
return value;
}
parser(value){
this.data = value.toLowerCase(); //manipulate the data according to your need
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以根据需要实现$ formatters和$ parsers.
| 归档时间: |
|
| 查看次数: |
6545 次 |
| 最近记录: |