У меня есть компонент Angular2, который должен получить идентификатор из внешней службы. Эта услуга возвращает обещание, поэтому мне нужно дождаться обещания, чтобы вернуть данные, прежде чем продолжить. Компонент выглядит примерно так:Promises, Angular2 и scope
export class AddTodoComponent implements OnInit {
public todo:TodoItem;
constructor(private todoService: TodoService,
private router: Router) {
this.todo = new TodoItem();
}
saveItem(){
this.todoService.getItems().then(t=>{
this.todo.item.id = t.length;
this.todoService.addItem(this.todo);
});
}
}
Однако, когда функция saveItem выполняет, я получаю сообщение об ошибке в консоли следующим образом:
EXCEPTION: Error: Uncaught (in promise): TypeError: Cannot set property 'id' of undefined
служба просто возвращает Promise.resolve(data)
с деталями мне нужно , и я проверил, что возвращает данные, как ожидалось. Однако теперь кажется, что внутри «thennable» обещания я больше не могу получить доступ к this.todo
, предположительно потому, что теперь это относится к обещанию, а не к классу.
Какое правильное/предпочтительное средство решения этой проблемы?
Это javascript? –
Да, добро пожаловать в новый мир Angular2, ES6 и обещаю с окроплением машинописного текста :) – LDJ