Rol*_*ndo 2 angular angular-arrays
我有以下学生名单:
students = [{name:'Jordan', passed:true}, {name:'Kyle'},{name:'Jess'},
{name:'Sam', passed:true}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够在HTML模板中获得学生通过的数组的长度.
通常我会这样做:
<div>
{{students.length}}
</div>
Run Code Online (Sandbox Code Playgroud)
但是,我想要这样的伪代码...
<div>
{{total length of students who passed}}
</div>
Run Code Online (Sandbox Code Playgroud)
我想这样做,如果我在页面上有其他按钮修改学生,这样当我改变学生是否通过时,模板将自动反映正确的学生数量.
我怎样才能做到这一点?
您无法在角度模板中执行此操作,尝试使用Pipe或invoking a method从Component的类中而不是在模板内执行此操作.我建议你Pipes.
在模板中:
<div>
{{ queryArray() }}
</div>
Run Code Online (Sandbox Code Playgroud)
在组件中:
queryArray() {
return this.students.filter(c => c.passed).length;
}
Run Code Online (Sandbox Code Playgroud)
对于管道
在html中:
<div>{{students | myLengthFilter:'passed' }}</div>
Run Code Online (Sandbox Code Playgroud)
在管道类中:
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'myLengthFilter'
})
export class MyLengthFilterPipe implements PipeTransform {
transform(items: any[], field: string): any {
if (!items || !field) {
return items;
}
// filter items array, items which match and return true will be
// kept, false will be filtered out
return items.filter(c => c[field]).length;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |