2016-04-01 3 views
0

Я искал решение моей проблемы в Интернете, но не нашел подходящего ответа. Хотя есть тонны этого конкретного вопроса в Интернете.this.hasErrors не является функцией

В моем файле транскрипт у меня есть следующие три метода:

hasErrors() { 
    // Checking for errors 
} 

saveItem() { 
    if (this.hasErrors()) 
     return; 
    // Save item 
} 

sendItemToAuthority() { 
    if (this.hasErrors()) 
     return; 
    // Send item to authority 
} 

Как-то this.hasErrors() внутри sendItemToAuthority() не признаваемые в качестве функции, но в saveItem() это работает без каких-либо проблем. Я получаю следующее сообщение об ошибке в хромированных инструментов разработчика:

this.hasErrors не является функцией

я нашел следующие возможности, которые не работали для меня тоже (то же самое сообщение об ошибке):

sendItemToAuthority() { 
    var self = this; 
    if (self.hasErrors) 
     return; 
    // Send item to authority 
} 

Может ли кто-нибудь привести меня к решению? Я действительно не понимаю, почему он не работает.

+1

почему это ваша ошибка, и ваше имя метода отличается? –

+0

Извините, это была опечатка в вопросе. –

ответ

1

Я, наконец, нашел решение. В моем конструкторе я имел

this.saveItem = this.saveItem.bind(this); 

но забыл добавить

this.sendItemToAuthority = this.sendItemToAuthority.bind(this); 
2

saveItem() он работает без проблем. Я получаю следующее сообщение об ошибке в хромированных инструментов разработчика this.hasErrors не является функцией

Вы, скорее всего, имеют неправильную this. Используйте функцию авторемонта: https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html

+0

Спасибо, я знал, что это неправильно. Проверьте мой собственный ответ, я нашел корень проблемы. –

Смежные вопросы