gpt4 book ai didi

javascript - Promises、Angular2 和作用域

转载 作者:搜寻专家 更新时间:2023-10-30 22:04:52 24 4
gpt4 key购买 nike

我有一个 Angular2 组件需​​要从外部服务获取 ID。此服务返回一个 promise ,因此我需要等待 Promise 在继续之前取回数据。该组件看起来像这样:

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),并且我已经验证它正在按预期返回数据。但是,现在看来在 promise 的“thennable”中我无法再访问 this.todo,这大概是因为 this 现在指的是 promise 而不是类。

解决这个问题的正确/首选方法是什么?

最佳答案

问题不在于 this 的值 - 由于使用了“粗箭头”函数(=>).

相反,问题似乎是 this.todo 没有 item 属性,因此您无法设置 this.todo .item.id.

关于javascript - Promises、Angular2 和作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com