如何将打字稿表达式传递给有角2组件

时间:2018-08-07 09:22:15

标签: angular typescript

我需要将一个简单的表达式传递到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

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

我可以如上所述实现吗?

角度模板语法中不允许使用箭头功能。

3 个答案:

答案 0 :(得分:0)

我认为不可能。我建议您做的是使用公共方法。因此,您可以在父组件中定义您的公共方法,然后在子组件上使用它

答案 1 :(得分:0)

<componentB #cmpB>
</componentB>
<div (click)="cmpB.editFunction()">
    This is where i want the function to be called
</div>

如果它只是要访问其功能的另一个组件,则可以执行上述操作

答案 2 :(得分:0)

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