В моем компоненте я получил объект, содержащий ссылку на функцию. Но когда я передаю его в HTML компонента и выполняю, он не имеет доступа к каким-либо другим свойствам за пределами области действия функции. Есть ли способ заставить это работать?
Вот мой код:
button = {label: 'My action', action: this.doStuff }
doStuff(){
if (this.userService.IsUserLoggedIn){ // Cannot read property 'IsUserLoggedIn' of undefined
//do stuff
}
}
<button (click) = "button.action()">{{button.label}}</button>
Я попытался добавить дополнительную функцию, которая привязывает this к работе, но безуспешно.
<button (click) = "exec(button.action)">{{button.label}}</button>
exec(func: Function){
func.bind(this);
func();
}
извините за любые ошибки



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это потому, что вам нужно привязать контекст при объявлении объекта кнопки:
button = { label: 'My action', action: this.doStuff.bind(this) }
(Я создал obj.condition, чтобы вы могли видеть аналогичную ошибку при удалении .bind(this))
В самом деле, так оно и было. Спасибо за ответ :)