here is my resolver
import { Injectable } from '@angular/core';
import { Resolve } from '@angular/router';
import { ContractService, UserContract } from './';
@Injectable()
export class UserContractsResolver implements Resolve<UserContract> {
    constructor(private contractsService: ContractService) {}
    public resolve(): any {
        return this.contractsService.getUserContracts().map(contracts => {
            return contracts;
        }).first();
    }
}
and my service
@Injectable()
export class ContractService {
    public userContracts: ReplaySubject<User> = new ReplaySubject(1);
    constructor(private http: AuthHttp) {}
    public getUserContracts() {
        if (!this.user.observers.length) {
            this.http.get('url')
                .map(response => response.json())
                .subscribe(contracts => {
                    this.nextUserContracts(contracts);
                });
        }
        return this.userContracts;
    }
}
and my component
export class Test implements OnInit {
    constructor() {
        // option1: get data from router
        this.route.data.subscribe(data => {
            console.log(data['contracts']);
        });
        // option2: get data from service
        this.contractService.getUserContracts().subscribe(contracts => {
            console.log(contracts);
        });
    }
    next() {
        this.contractService.userContracts.next([]);
    }
}
The problem is that when data (observable) updates (call next() function for example) I can catch it only with option2(service). Maybe I understand it wrong, but I want to catch it with option1(resolver).
Is it possible?
