반응형
ngFor 비동기 파이프에 관측 가능이 아닌 관측 가능이 필요한 이유
다음과 같은 템플릿이 있다.
*ngFor="let contact of contacts | async"
위치:
contacts: Observable<any>;
다음 오류가 발생하는 경우:
ERROR Error: Cannot find a differ supporting object '[object Object]'
of type 'object'. NgFor only supports binding to Iterables such as Arrays.
ngFor 비동기 파이프에 필요한 이유Observable<any[]>
대신에Observable<T>
?
이것은 그 때문은 아니다.async
파이프를 치다
그contacts
관측 가능은 배열 대신 물체를 방출하며, 당신은 물체를 반복할 수 없다.*ngFor
. 에러메시지에는 그렇게 적혀 있다.
그래서 문제는 에 있다.contacts
그것이 실제로 무엇을 발산하는지 한번 보십시오.
ngFor는 수많은 '컨택트(contacts)'를 볼 필요가 있으며(@martin에서 이미 언급된 바와 같이), 이는 또한 그것이 반복하고 있는 것의 범위, 즉 얼마나 많은 항목을 표시하려고 하는지를 알 필요가 있다는 것을 의미한다.
앞으로 가장 간단한 방법은 다음 항목을 사용하는 다른 속성을 추가하는 것이다.toArray()
구성 요소에 대한 연산자 및 템플릿에 해당 연산자를 사용하십시오.
템플릿.
<div *ngFor="let contact of contactsList | async">
From contactsList: {{contact}}
</div>
구성 요소
contactsList = this.contacts.toArray();
단, 연락처 관찰이 완료되기 전에(즉, 각 연락처를 내보낸 경우 ngFor에 추가) 어떤 것을 표시하려면 버퍼링 관찰이 필요하다.
private buffer = [];
contactsList = Observable.of(this.buffer);
ngOnInit() {
this.contacts.subscribe(contact => {
this.buffer.push(contact)
})
}
데모: StackBlitz
반응형
'IT이야기' 카테고리의 다른 글
대응 후크를 렌더링하기 전에 API 데이터 대기 (0) | 2022.03.25 |
---|---|
Vue.js 방법은 한 번만 호출해야 할 때 $emit와 $on을 사용하여 여러 번 호출된다. (0) | 2022.03.25 |
React Hooks useEffects의 기능이 호출되기 전에 렌더가 발생하는가? (0) | 2022.03.25 |
Python strftime - 선행 0이 없는 날짜? (0) | 2022.03.25 |
Vue Test Utils / Jest - 구성 요소 방법 내에서 클래스 방법이 호출되었는지 테스트하는 방법 (0) | 2022.03.25 |