【发布时间】:2018-01-27 14:12:18
【问题描述】:
我在表格中有一组对象(任务)和两个复选框:“夜晚”、“白天”。
我想要下一个场景:如果选中了“夜”复选框,则表中只剩下具有“夜”属性的任务。如果复选框 Day 被选中,则只有具有“Day”属性的任务会留在表格中(如果复选框“Night”仍然被选中,“Night”任务也会被留下)。第三个复选框“重置”重置过滤器。
也许使用另一种排序方式更好,例如管道?
这里是Plunkr。 这是一个代码:
@Component({
selector: 'my-app',
template: `
<input type="checkbox" (click)="getNight()">Night
<input type="checkbox" (click)="getDay()">Day
<input type="checkbox">Uncheck
<br><br>
<table>
<tr *ngFor="let task of tasks">
<td>{{task.chkBoxImageUrl}}</td>
<td>{{task.id}}</td>
<td>{{task.val}}</td>
</tr>
</table>
`,
})
export class App {
tasks: Array<{chkBoxImageUrl: string, id: string, val: string,
checked:boolean}> = [
{chkBoxImageUrl: "http1", id: "item1", val: "Night", checked: false},
{chkBoxImageUrl: "http2", id: "item2", val: "Day", checked: false},
{chkBoxImageUrl: "http3", id: "item3", val: "Night", checked: false},
{chkBoxImageUrl: "http4", id: "item4", val: "Day", checked: false},
{chkBoxImageUrl: "http4", id: "item4", val: "Morning", checked: false},
{chkBoxImageUrl: "http4", id: "item4", val: "Evening", checked: false}
];
getNight() {
console.log(this.tasks[2].val); // Night
// return this.tasks.filter(obj => obj.checked).map(obj => obj.val);
if(this.tasks.val == 'Night') {
return this.tasks.filter(obj => obj.checked).map(obj => obj.val == 'Night');
} else {
console.log('666666');
}
};
getDay() {
return this.tasks.filter(obj => obj.checked).map(obj => obj.val);
};
getCheckedCount(){
return this.getCheckedValues().length;
}
}
【问题讨论】:
-
Angular 文档不鼓励使用管道进行过滤和排序。你可以阅读更多关于它here
标签: angular angular2-forms angular2-directives