angular2를 배우고 있습니다. 난 내 필터에 사용하는 경우선택 옵션을 부울 값으로 변환합니다.
가<select [(ngModel)]="caseSensitive">
<option>false</option>
<option>true</option>
</select>
아니 그렇지 부울과 같은 문자열로 보내드립니다 :
내가 부울 값으로 작동해야select
필드가 : 여기에는 다음과 같은 문제가있다. 여기
내 전체 HTML 코드 :
<input [(ngModel)]="nameFilter"/>
<select [(ngModel)]="caseSensitive">
<option>false</option>
<option>true</option>
</select>
<table>
<tr *ngFor="let p of (persons | MyFilter: nameFilter:caseSensitive); let i = index">
<td>{{i + 1 }} </td>
<td>{{
p.givenName+" "+ p.familyName
}}</td>
<td><img src="/img/flags/{{ p.nationality}}.png"></td>
</tr>
</table>
는 TS 코드 :
import { Component } from '@angular/core';
import {MyFilter} from './MyFilter';
@Component({
selector: 'pizza-root',
pipes: [MyFilter],
templateUrl: 'app.component.html'
})
export class AppComponent {
public year = new Date().getFullYear();
public persons =[{"givenName":"Paul", "familyName": "Smith", "nationality":"american"},
{"givenName":"Jens", "familyName":"myName1", "nationality":"german"},
{"givenName":"Ernst", "familyName":"myName1", "nationality":"german"},
{"givenName":"Jenny", "familyName":"myName1", "nationality":"german"}];
constructor(){
console.log(this.persons);
}
}
파이프 :
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;
}
}
이 같은 컨버터 또는 무언가를 사용하여 변환 할 수 있습니다
caseSensitive
은 문자열로 바인드되지 않으므로 파이프가 올바르게 작동하지 않는다는 문제점이 있습니다. boolean 치
@Downvoter 설명해주세요. – Jens