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>