【发布时间】:2023-03-13 11:49:02
【问题描述】:
我想知道在 Angular 中这样的组件中是否可以使用箭头函数
<app-child [showItemCondition]="item => item.isVisible" [list]="items"></app-child>
【问题讨论】:
标签: angular components arrow-functions
我想知道在 Angular 中这样的组件中是否可以使用箭头函数
<app-child [showItemCondition]="item => item.isVisible" [list]="items"></app-child>
【问题讨论】:
标签: angular components arrow-functions
正如 Guerric 所说,这是不可能的,你应该定义,例如
condition=(item)=>item.isVisible
//or
condition=(item)=>{
return item.isVisible
}
condition(item){
return item.isVisible
}
并将函数作为arg传递
<app-child [showItemCondition]="condition" [list]="items"></app-child>
在你的孩子身上
@Input()showItemCondition:any
<div *ngFor="let item of items">
{{showItemCondition(item)}}
</div>
【讨论】:
任何函数都不能在模板中定义。为了使它成为可能,那么我们需要在 JIT 编译模式下评估这些代码。
禁止使用箭头功能可以摆脱不必要的代码(DRY 和 KISS),结果:
如果你需要一个函数,它应该被定义为组件类方法。它可以是常规函数或箭头函数。
如果将逻辑放在模板中,则表示:
【讨论】:
您可以这样做以自定义ChildComponent 的行为,只要回调没有对父级的引用。在这种情况下,您应该使用 @Output() 重构您的代码。
但是,您不能在模板中声明函数,因此您必须将其分配给父级的变量并将该变量传递给子级。该函数还应声明为经典函数(不是箭头),否则,this 将引用父函数。
【讨论】: