Angular2 ng2-fullpage.js afterload 在错误的上下文中触发

Angular2 ng2-fullpage.js afterload trigger in wrong context

我正在使用 fullpage.js Angular 2 https://github.com/meiblorn/ng2-fullpage

当使用此配置加载页面时,我试图触发我的组件的特定方法:

export class NavbarComponent implements OnInit {

...

@Input() public options:MnFullpageOptions = new MnFullpageOptions({
afterLoad: this.type
});

type(anchorLink, page_num){
this.resetPages();
console.log(page_num);

let phrase;
...
}

}

"type" 方法被正确触发,但 "this" 调用在该方法内不起作用。我想这是因为它在另一个上下文中是 运行。

Error: Uncaught (in promise): Error: Error in ./NavbarComponent class NavbarComponent - inline template:2:5 caused by: this.resetPages is not a function

我该如何解决这个问题?

我找到了一个 hack 来做我想做的事,但它不是很干净。

我创建了一个触发类型方法的隐藏按钮:

<button (click)="type(1);" class="hidden" id="show1"></button>

然后我让 afterLoad 事件调用一个静态函数,该函数在按钮上 'click'。

export class NavbarComponent implements OnInit {

...

@Input() public options:MnFullpageOptions = new MnFullpageOptions({
afterLoad: click
});

type(page_num){
...
}

}

function click(_, index){
  eventFire(document.getElementById('show' + index), 'click');
}

function eventFire(el, etype){
  if (el.fireEvent) {
    el.fireEvent('on' + etype);
  } else {
    let evObj = document.createEvent('Events');
    evObj.initEvent(etype, true, false);
    el.dispatchEvent(evObj);
  }
}