首页 > 解决方案 > 如何将打字稿表达式传递给 Angular 2 组件

问题描述

我需要将一个简单的表达式传递给我的 Angular 组件。

这就是我想使用它的方式:

在父 html 中:

<my-component [expression]="$context.foo.bar" [items]="Items"></my-component>

在我的组件代码中:

@Input() expression: Function;
@Input() items: any[];
...
const results = this.items.map(item => this.expression(item)); // $context = item

我可以传递一个方法的引用,但是传递这么简单的表达式需要花费很多时间和精力。

我可以像上面提到的那样实施吗?

角度模板语法中不允许使用箭头函数。

标签: angulartypescript

解决方案


您正在尝试做一件坏事,这可能会破坏变更检测机制。相反,在父组件中,您应该expression在数组项上执行并将结果传递给子组件。如果您确实希望子组件能够访问外部表达式,则应将其移至父组件提供的服务。检查是否forwardRef允许将组件的实例用作某些注入令牌的提供者。


推荐阅读