如何将带参数的函数传递给Angular中的内部组件

Posted

技术标签:

【中文标题】如何将带参数的函数传递给Angular中的内部组件【英文标题】:How to pass a function with a parameter to an inner component in Angular 【发布时间】:2020-10-17 22:38:26 【问题描述】:

我有一个子组件,它需要来自父组件的数据才能调用其函数。如何将其放入代码中?

parent.html

<child-component>getDailyForeCast(element.symbol)</child-component>

child.html

<canvas id="canvas">  getDailyForeCast(symbol) </canvas>

子组件

getDailyForeCast(symbol)

...

【问题讨论】:

你的函数是在你的父组件中定义的吗? 定义在子组件中,见代码sn-p 你的问题对我来说没有意义。您想将符号从父母传递给孩子吗? 是的,就是这样 我已经回答了解决方案。您的问题是否使用以下解决方案解决了? 【参考方案1】:

我认为您不需要将函数传递给子组件。 您只想将 element.symbol 传递给子组件,您可以在您的子组件中使用 @Input。

<child-component [symbol]="element.symbol"> </child-component>

在您的子组件中,您可以在 .ts 文件中定义变量:

@Input('symbol') symbol;

并且只需使用 symbol

在您的 html 文件中使用此符号

【讨论】:

【参考方案2】:

您可以使用Input 装饰器绑定来自另一个组件的属性。文档:https://angular.io/api/core/Input

现在您可以在子组件中使用该符号并对其进行任何操作。

parent.component.html

<child-component [symbol]='element.symbol'></child-component>

child.component.ts

@Input() symbol;

getDailyForeCast()
  // use this.symbol and return some output    
...

child.component.html

<canvas id="canvas">  getDailyForeCast() </canvas>

PS:如果涉及多个组件,你可以考虑使用一个服务。

【讨论】:

与我上面的答案相比,您在答案中写的任何内容都传达了相同的解决方案。所以我认为这个答案并没有做出更多贡献。 @Minal Shah 我记得它们大约是在同一时间写的。然而,这里有一些额外的细节,输入文档参考、如何访问输入、子模板的示例以及使用服务的建议。

以上是关于如何将带参数的函数传递给Angular中的内部组件的主要内容,如果未能解决你的问题,请参考以下文章

通过Angular组件将函数作为参数传递给(单击)事件

将带参数的函数传递给 VoidCallback

Angular 2:如何将路由参数传递给子路由?

如何使用 Promise 将参数传递给 AngularJS 中的函数

如何使用 MatDialog 将行数据或数组对象传递给 Angular 中的组件

如何将父组件函数传递给子组件,然后从子 AngularJS 内部调用它