2017-01-14 5 views
1

Я работаю с fullpage.js для угловых 2 https://github.com/meiblorn/ng2-fullpageAngular2 NG2-fullpage.js постнагрузка триггер в неправильном контексте

Я пытаюсь вызвать определенный метод моего компонента при загрузке страницы с этим конфигурация:

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; 
... 
} 

} 

метод «типа» правильно срабатывает, но «этот» вызов не работает в рамках метода. Я думаю, это потому, что он работает в другом контексте.

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

Как это решить?

+0

Звучит как вопрос для угловой директивы. Вы спрашивали в своих проблемах с github? – Alvaro

ответ

0

Я нашел взломать то, что я хотел сделать, но это не очень чисто.

Я создал скрытую кнопку, которая вызвать метод типа:

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

И я сделал это событие постнагрузки вызвать статическую функцию, которая «нажать» на кнопку.

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); 
    } 
}