Используйте функцию Function.prototype.bind :
getMessages() {
this.apiService.getMessages(this.gotMessages.bind(this));
}
Что здесь происходит, так это то, что вы передаете gotMessages
в качестве обратного вызова, когда это выполняется область действия различна, поэтому this
не соответствует ожидаемому. Функция bind
возвращает новую функцию, которая привязана к this
, которую вы определили.
Вы также можете использовать функцию толстой стрелки:
getMessages() {
this.apiService.getMessages(messages => this.gotMessages(messages));
}
Я предпочитаю синтаксис bind
, но это зависит от вас.
Третий вариант, чтобы связать метод для начала:
export class MainComponent {
getMessages = () => {
...
}
}
Вы должны быть уверены в пути питона. Так что используйте это
import sys
print(sys.path)
Для Python36 путь следующий:
C:\Users\user\AppData\Local\Programs\Python\Python36
В Python 3
В разделе «Команды Python» найдите строку «Компиляция». Введите следующее в поле «Команда». Убедитесь, что вы правильно сделали пробелы. У вас должно быть 'C: \ Python34 \ python', затем пробел и остальная часть команды. Если у вас есть «Python 34» с пробелом между Python и 34, Geany не сможет запустить ваш код. Также убедитесь, что ваша заглавная буква соответствует тому, что вы видите здесь.
C:\Python34\python -m py_compile "%f"
или используйте следующий путь
C:\Users\user\AppData\Local\Programs\Python\Python36 -m py_compile "%f"
В разделе «Выполнить команды» найдите строку «Выполнить». Введите следующее в поле «Команда», снова обращая внимание на пробелы.
C:\Python34\python "%f"
или C:\Users\user\AppData\Local\Programs\Python\Python36 "%f"
Проверьте свои настройки, снова запустив hello.py.
Python 2
Если вы установили Python 2.7 вместо Python 3, вам, вероятно, понадобятся следующие команды:
C:\Python27\python -m py_compile "%f"
или path of your python -m py_compile "%f"
и
[ 1111] или path of your python "%f"
См. Эту ссылку для получения дополнительной информации: http://introtopython.org/programming_environment_windows.html