如何将Angular 2函数参数绑定到父作用域?

如何将Angular 2函数参数绑定到父作用域?,angular,parameters,scope,bind,Angular,Parameters,Scope,Bind,我的问题如下:我有一个typeahead组件,它从我想要通过的注入服务的方法中获取下拉选项。我可以在typeahead组件中实例化服务并在那里获取数据,但在这种情况下,我的组件将无法从任何服务接收任何类型的服务方法。所以我想做的是: 家长: <app-typeahead [typeaheadService]="myservice.getFunction"></app-typeahead> 儿童: @Input() public typeaheadService:

我的问题如下:我有一个typeahead组件,它从我想要通过的注入服务的方法中获取下拉选项。我可以在typeahead组件中实例化服务并在那里获取数据,但在这种情况下,我的组件将无法从任何服务接收任何类型的服务方法。所以我想做的是:

家长:

<app-typeahead [typeaheadService]="myservice.getFunction"></app-typeahead>

儿童:

  @Input() public typeaheadService: (string) => (Observable<any[]>);
@Input()公共类型头服务:(字符串)=>(可观察);
但是当我尝试运行它时,我得到了“this.get不是一个函数”,因此我猜测我正在丢失父作用域,我已经尝试将它作为
[typeaheadService]=“myservice.getFunction.bind(this)”
传递,但它也不起作用。 请不要建议在keyup上发出一个事件,然后通过param将结果传递给子级,因为我想在从订阅中获得结果后做一些事情,或者如果结果为空,我只能在处理子级的结果时做这些事情。
谢谢。

您实际上希望将服务功能绑定到服务:

[typeaheadService]=“myservice.getFunction.bind(myservice)”

还考虑将绑定函数保存在组件中的变量中,否则角度将在每个更改检测周期上创建一个新函数,并更新<代码> Type AsHealthService < /Cord>输入> < /P> 模板:

[typeaheadService]=“typeaheadCallback”

和组成部分:


public readonly typeaheadCallback=myservice.getFunction.bind(myservice)

能否显示getFunction的定义?如果您将函数定义为箭头函数,您甚至不需要这样做,这肯定是可行的,但这不是最佳实践。有
@输出
s用于this@CristianTraìna实际上,这也是typeahead在ng引导中使用的模式。也许更好的方法是使用服务和提供者
@Output
并没有完全涵盖这种情况。