Angular 将选择选项转换为布尔值
我正在学习英语。我有以下问题: 我有一个Angular 将选择选项转换为布尔值,angular,typescript,Angular,Typescript,我正在学习英语。我有以下问题: 我有一个select字段,该字段应作为布尔值: <select [(ngModel)]="caseSensitive"> <option>false</option> <option>true</option> </select> 管道: import { Pipe, PipeTransform} from '@angular/core'; @Pipe({
select
字段,该字段应作为布尔值:
<select [(ngModel)]="caseSensitive">
<option>false</option>
<option>true</option>
</select>
管道:
import { Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'MyFilter'
})
export class MyFilter implements PipeTransform{
transform( items: any[], args: string, caseSensitive : boolean ):any {
if (items != null && args != undefined && args != ''){
if (caseSensitive){
console.log("caseSensitive")
return items.filter(item=>item.givenName.indexOf(args)!== -1);
} else {
console.log("caseInSensitive")
return items.filter(item=> item.givenName.toLowerCase().indexOf(args.toLowerCase())!== -1);
}
}
console.log("else")
return items;
}
}
问题是,管道不能正常工作,因为区分大小写是作为字符串而不是布尔值绑定的。如果提供了其他类型,则
中的值是字符串或字符串化。如果改用ngValue
,则可以使用其他类型,并且ngModel
保留该类型
<select [(ngModel)]="caseSensitive">
<option [ngValue]="false">false</option>
<option [ngValue]="true">true</option>
</select>
假的
真的
@Downvoter请解释一下[value]属性绑定的行为总是像字符串一样,因此它不同于[ngValue]Right[value]
只绑定到只处理字符串值的
属性ngValue
是处理任何值类型的角度指令。
import { Pipe, PipeTransform} from '@angular/core';
@Pipe({
name: 'MyFilter'
})
export class MyFilter implements PipeTransform{
transform( items: any[], args: string, caseSensitive : boolean ):any {
if (items != null && args != undefined && args != ''){
if (caseSensitive){
console.log("caseSensitive")
return items.filter(item=>item.givenName.indexOf(args)!== -1);
} else {
console.log("caseInSensitive")
return items.filter(item=> item.givenName.toLowerCase().indexOf(args.toLowerCase())!== -1);
}
}
console.log("else")
return items;
}
}
<select [(ngModel)]="caseSensitive">
<option [ngValue]="false">false</option>
<option [ngValue]="true">true</option>
</select>