2017-12-09 2 views
1

변수를 다음과 같이 정의했습니다. myVar: Observable<Observable<MyObject>[]>. 내가 비동기 파이프ngFor에서 비동기 파이프 사용 Observables Observable of Observables (Angular)

*ngFor="let obsMyObject of (myVar | async)" 

으로 열거 할 Angular4 기능을 사용하고

지금은 MyObject를의 관찰 가능한, 그러나 나는 MyObject를 바로해야합니다. 나는 이런 식으로 뭔가가 필요하므로 속성을

<div *ngFor="let obsMyObject of (myVar | async)"> 
    <div *ngIf="let obsMyObject | async; let MyObject"></div> 
</div> 

하지만 난 (내부 사업부에 영향을주지 않는) flex order를 설정하고 때문에, 내부 사업부에서이 작업을 수행 할 수 없습니다 : 그 뭔가를 쓸 수

<div *ngFor="let obsMyObject of (myVar | async); let MyObject = (obsMyObject | async)" 
    [style.order]="MyObject.order"> 
</div> 

나는 얼마나이 작업을 수행하는 하나 개의 아이디어가 있고, 나는이 시도 :

<div *ngFor="let obsMyObject of (myVar | async); let MyObject = obsMyObject)"> 
    {{MyObject}} 
</div> 

을하지만 MyObject를 정의되지 않은, 그래서 let MyObject = (obsMyObject | async)이 작동 할 수있는 방법은 없습니다.

+0

은 무엇'obsMyObject'와'MyObject'의 차이해야 하는가? –

+0

왜 관측 대상을 관찰 할 수 있습니까? 무엇을 제공하든 다시 작성할 필요가있는 것 같습니다. 지도보다는 flatMap을 사용합니다. – jonrsharpe

+0

'obsMyObject'는'BehaviorSubject '이며, style.order 속성을 설정하는 데 사용할 수 없습니다. – Makla

답변

0

나는 당신이 관측 가능에 대한 참조를 구독하고 생성하기 위해 ng-containerngIf을 사용하고자한다고 생각한다. 그런 다음 ng-container에서이 새로운 변수를 일반 객체처럼 참조 할 수 있습니다.

<ng-container *ngIf="myVar$| async as myVar"> 
    <div *ngFor="let obsMyObject of myVar"> 
    {{obsMyObject }} 
    </div> 
</ng-container> 

myVar 및 개체의 사용은 정말로 혼란 스럽습니다. 구성 요소의

속성으로 선언 : 여기에 더 좋은 예제가

users$: Observable<User[]> 

그리고 템플릿 :

<ng-container *ngIf="users$ | async as users"> 
    <div *ngFor="let user of users"> 
    {{ user.name }} 
    </div> 
</ng-container> 
+0

그렇지 않습니다. 나는 Observable []>'을 가지고 있는데 이것은 Observable이 아닙니다 '입니다. 2 Observables가 필요합니다. 사용자 및 사용자 배열이 모두 변경되기 때문입니다. – Makla