如何将 Angular 2 函数参数绑定到 parent 作用域?
How to bind Angular 2 function parameter to parent scope?
我的问题如下:我有一个预输入组件,它从我想传递的注入服务的方法中获取下拉选项。我可以在 typeahead 组件中实例化服务并在那里获取数据,但在这种情况下,我的组件将无法从任何服务接收任何类型的服务方法。所以我想做的是:
Parent:
<app-typeahead [typeaheadService]="myservice.getFunction"></app-typeahead>
Child:
@Input() public typeaheadService: (string) => (Observable<any[]>);
但是当我尝试 运行 它时,我得到 "this.get is not a function" 所以我的猜测是我失去了 parent 范围,我已经尝试将它作为 [typeaheadService]="myservice.getFunction.bind(this)"
但它也不起作用。
请不要建议在 keyup 上发出事件,然后通过参数将结果传递给 children,因为我想在我从订阅中获得结果后做一些事情,或者如果结果为空,我只能这样做如果我处理 children 的结果。
谢谢。
您确实希望将服务功能绑定到服务:
[typeaheadService]="myservice.getFunction.bind(myservice)"
此外,请考虑将绑定函数保存在组件的变量中,否则 angular 将在每个更改检测周期创建一个新函数并更新您的 typeaheadService
输入。
模板:
[typeaheadService]="typeaheadCallback"
和组件:
public readonly typeaheadCallback = myservice.getFunction.bind(myservice);
我的问题如下:我有一个预输入组件,它从我想传递的注入服务的方法中获取下拉选项。我可以在 typeahead 组件中实例化服务并在那里获取数据,但在这种情况下,我的组件将无法从任何服务接收任何类型的服务方法。所以我想做的是:
Parent:
<app-typeahead [typeaheadService]="myservice.getFunction"></app-typeahead>
Child:
@Input() public typeaheadService: (string) => (Observable<any[]>);
但是当我尝试 运行 它时,我得到 "this.get is not a function" 所以我的猜测是我失去了 parent 范围,我已经尝试将它作为 [typeaheadService]="myservice.getFunction.bind(this)"
但它也不起作用。
请不要建议在 keyup 上发出事件,然后通过参数将结果传递给 children,因为我想在我从订阅中获得结果后做一些事情,或者如果结果为空,我只能这样做如果我处理 children 的结果。
谢谢。
您确实希望将服务功能绑定到服务:
[typeaheadService]="myservice.getFunction.bind(myservice)"
此外,请考虑将绑定函数保存在组件的变量中,否则 angular 将在每个更改检测周期创建一个新函数并更新您的 typeaheadService
输入。
模板:
[typeaheadService]="typeaheadCallback"
和组件:
public readonly typeaheadCallback = myservice.getFunction.bind(myservice);