2017-12-22 40 views
0

각도 5 프로젝트에서보기가로드되기 전에 리졸버를 실행하고 싶습니다. 문제는 분석기에서 반환하려는 데이터가 관찰 가능 여부에 달려 있다는 것입니다. 보기 아무것도가 표시됩니다에 탐색 할 때이 코드Angular execute resolve with observable

@Injectable() 
export class PlayersService { 
    standingsSubject = new ReplaySubject<any>(); 
    standings$ = this.standingsSubject.asObservable(); 

    constructor(private http: HttpClient) {} 

    getStandings(): void { 
    this.http.get('http://localhost:8080/api/fixtures/standings') 
     .subscribe((response: any) => { 
     this.standingsSubject.next(response); 
     }); 
    } 
} 

:

확인자 : 리졸버에 의해 사용

@Injectable() 
export class PlayersResolver implements Resolve<any> { 
    constructor(private playersSrv: PlayersService) { 
    this.playersSrv.getStandings(); 
    } 

    resolve() { 
    return this.playersSrv.standings$; 
    } 
} 

서비스 이것은 코드입니다. 내 구성 요소에 데이터를 가져 오려는 해결책을 어떻게 구현할 수 있습니까?

감사합니다.

+0

나를 믿어 라. 당신은 서비스 안에 구독하고 싶지 않다. –

+0

안녕하세요 Jota.Toledo, 왜 안 되니? –

답변

2

1. 서비스 기능에서 관찰 가능합니다. 2. 서비스에서 구독을 취소하십시오. 자동으로 관찰

resolve():observable<any>{ 
return this.playersSrv.getStandings().map((data)=>{//do something with data}) 
} 

4.Resolve 가드를 반환하는 서비스 호출을 구독하고 다음 경로가 그것의 해결에만로드 서비스 기능 어떤 inturn에 전화를 돌려 해결 방법에서 서비스 함수를 호출 3.Just

+0

죄송합니다. 작동하지 않습니다. '속성'map '이 (가)'Observable '' –

+0

에 존재하지 않습니다. observable을 서비스에서 반환하지 마십시오. 연산자를 가져 왔습니까? import 'rxjs/add/operator/map'; getStandings() { this는 http : // localhost : 8080/api/fixtures/standings '이 (가) 반환됩니다. – RRForUI

+0

아, 그랬습니다. 감사!! –