【发布时间】:2017-11-23 10:38:13
【问题描述】:
在使用 Angular 模板时,我发现像 slice() 这样的数组函数与 ngFor 这样的指令表达式配合得非常好
<div *ngFor="let item of arry.slice(3)">
{{ item.name }}
</div>
当我尝试在 ngFor 表达式中使用 filter() 或 map() 之类的数组函数时,如下所示
<div *ngFor="let item of arry.filter(i => i.marks > 40)">
{{ item.name }}
</div>
它给了我角度模板解析错误
Zone: <root> ; Task: Promise.then ; Value: Error: Template parse errors:
Parser Error: Bindings cannot contain assignments at column 25 in [let item of arry.filter(i => i.marks > 40)]
为了了解这种行为背后的原因,我试图找出一些解释这些限制的文件,但没有找到。任何线索或解释将不胜感激。
【问题讨论】:
-
不是所有的打字稿表达式都允许在一个角度模板中,例如,创建一个新的匿名函数
-
这在所有浏览器上都失败了吗?
-
是的,这是一个模板错误。严格不允许有角度的。这不是浏览器限制
-
我会从这里开始阅读:angular.io/guide/template-syntax#template-expressions 我喜欢让我的模板尽可能简单,并在 TypeScript 代码中完成所有业务逻辑。
-
@Skeptor,它无法解析该文本并认为等号是一个赋值。
标签: javascript arrays angular ngfor