Angular2 및 observables를 처음 사용했습니다. 나는 관찰자의 사슬의 결과를 내 결의의 자에게 돌려 주려고 노력하고있어, 그래서 그 대답을 찾을 수 없었다. 하나의 관측 대상 만 반환하면 모든 것이 잘 작동하지만 연결된 경우 실패합니다.각도 2 : Resolver의 Chain Observables
이@Injectable()
export class SwResolve implements Resolve<any> {
constructor(private swService: SwService) {}
resolve (route: ActivatedRouteSnapshot): Observable<MyObject> | Promise<any> | any {
this.swService.getTestData().subscribe(data => {
return this.swService.getTestData();
});
}
}
SwComponent가 :
export class SwComponent implements OnInit {constructor(
private route: ActivatedRoute,
private router: Router
) { }
ngOnInit(): void {
this.route.data.forEach((data: any) => {
// Handle data received
});
}
};
가 SwService :
getTestData() {
return Observable.create(observer => {
let testObject : SwDataObject = {
'labels':['value0','value1'],
'desktop':[123,456],
'mobile':[789,1011]
};
observer.next(testObject);
observer.complete();
});
}
내가 잘못 여기서 뭐하는 거지 내가 두 번 연속 같은 테스트 함수 호출에 코드를 단순화했습니다?
감사합니다.
편집 06 월 17 일 : RxJs의 메서드 (flatMap, mergeMap, ...)에서 내 머리를 감싸는 데 좀 더 많은 정보가 추가되었습니다. 주된 이유는 필자가 기능적 측면을 얻지 못했기 때문입니다. 같은 배에있는 사람들이 Charles Scalfani의 these excellent series of articles on functional programming을 한번 보도록 권장합니다.
@KwibtenP 고맙습니다. mergeMap과 flatMap은 어떤 이유로 http 호출 전용이라고 생각했습니다. 코드는 이제 또 다른 오류를 반환합니다 :'TypeError : 속성을 읽을 수 없습니다 'Symbol (Symbol.iterator)'of undefined' – Stanislasdrg
atm 코드를 게시 할 수 있습니까? 나는 mergeMap 내 대답에 return 문을 놓친 것을 참조하십시오. 나는 그것을 업데이트했다 (위의 대답 참조). 그게 도움이된다면 시도해도 될까요? – KwintenP
Thanks KwintenP, 업데이트 된 버전으로 작동합니다! – Stanislasdrg