저는 Angular 4 앱을 쓰고 있습니다. 여기에는 2 개의 목록이 있습니다. 첫 번째 목록에서 요소를 클릭하면 결과는 새보기의 두 번째 목록 (외래 키를 통해)의 하위 집합이어야합니다. 내 서비스의 함수로 ID (외래 키)로 필터링합니다. 내 구성 요소에서 나는 단지 'undefined'를 받는다. 그 이유는 내 서비스에서 Observable을 사용하기 때문에 하위 집합 목록에 대한 새로운보기가 표시 될 때 데이터가 준비되지 않았기 때문입니다. 내 목표에 도달하기 위해 이것을 다른 방법으로 어떻게 할 수 있습니까? 는 A 매트 테이블 셀에 클릭 이벤트를 통해 내 서비스 메서드 호출각도 - 관찰 가능한 데이터가 준비되지 않았습니까?
: 내 component.ts에
getItemsByID(id: number): Observable<Item[]> {
return this.http.get('/api/Item').map((response) => {
console.log(id); //shows correct item id
console.log(this.items.filter(iteration => item.item_id === id)); // shows correct array of subset list
return this.items.filter(item=> item.item_id === id);
});
}
방법 내 service.ts에서
방법을
getItem(): void {
const id = +this.route.snapshot.paramMap.get('id');
this.itemService.getItemsByID(id)
.subscribe(response => this.items = response);
console.log(this.items); // shows 'undefined'
}
내 코드에서 보여줄 다른 항목이 있습니까?
전체 로그 :
undefined
4
Array [ {…}, {…}, {…}, {…} ]
고마워요!
은 내부을 console.log() **을 넣어 ** 가입에 전달 된 콜백(). http는 비동기식입니다. 그것이 Observable을 반환하는 이유입니다. 응답이 가능해질 때까지 차단되면 감시 카메라로 인해 방해를받지 않을 것입니다. 응답을 직접 리턴합니다. 토스터에 넣은 직후에 토스트를 먹을 수는 없습니다. 토스트가 준비되었음을 알린 토스트를 먹습니다. –
문제 해결에 도움이되는 세부 정보를 추가하십시오. Angular가 제공하는 두 가지 Http 서비스가 있습니다. 어떤 모듈을 사용하고 있습니까? 귀하의 답변에 대해 –