如何在渲染的Angular 2中调用指令/组件的函数

时间:2017-02-05 11:12:19

标签: angular angular2-directives

在渲染器内部使用“this”作为未定义。我怎么能在函数内传递这个?还是有其他方法来观看滚动并实现相同的目标吗?

 ngAfterContentInit() {
      this.Scroll();
}

constructor(el: ElementRef, renderer: Renderer) {
    this.el = el;
    this.renderer = renderer;
}

Scroll():void{
this.renderer.listen(this.e[0], 'scroll', (event: any, ):void => {
     //want to call Directives function here
    //ex: this.someFunc()
    },true);
 }

i event尝试了JavaScript方法

this.e[0].addEventListener('scroll', function (e: any) {
//ex: this.someFunc()
 });

1 个答案:

答案 0 :(得分:0)

此关键字在事件函数定义中不起作用,因为它不在此函数的范围内。为了使其有效,您可以保存这个'函数变量中的作用域,并在事件函数定义中使用它。

Scroll():void{
var self = this;
this.renderer.listen(this.e[0], 'scroll', (event: any, ):void => {
     //use self instead of this
    //ex: self.someFunc()
    },true);
 }

希望这有帮助。