외부 서비스에서 ID를 가져와야하는 Angular2 구성 요소가 있습니다. 이 서비스는 프라 미스를 반환하므로 계속하기 전에 데이터를 다시 가져 오려면 프라 미스를 기다려야합니다. 구성 요소는 다음과 같습니다.
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 함수가 실행되면 다음과 같이 콘솔에 오류가 발생합니다.
예외 : 오류 : 포착되지 않음 (약속에서) : TypeError : 정의되지 않은 속성 'id'를 설정할 수 없습니다.
서비스는 Promise.resolve(data)
필요한 항목과 함께 a 를 반환하고 예상대로 데이터를 반환하는지 확인했습니다. 그러나 이제는 promise 의 ' thennable ' 내부에서 더 이상 액세스 할 수없는 것 this.todo
같습니다. 왜냐하면 이것이 이제 클래스가 아닌 promise를 참조하기 때문입니다.
이 문제를 해결하는 올바른 / 선호하는 방법은 무엇입니까?
문제는의 값과 관련이 없습니다. "뚱뚱한 화살표"함수 ( )를 사용 this
하기 때문에 여전히 AddTodoComponent
클래스 인스턴스를 참조합니다 =>
.
대신 문제는의 item
속성 이 없다는 것이므로을 this.todo
설정할 수 없습니다 this.todo.item.id
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다