behaviourSubject em angular2, como funciona e como usá-lo

Estou tentando criar um serviço compartilhado da seguinte maneira

import {Injectable,EventEmitter}     from 'angular2/core';
import {Subject} from 'rxjs/Subject';
import {BehaviorSubject} from 'rxjs/subject/BehaviorSubject';
@Injectable()
export class SearchService {

    public country = new Subject<SharedService>();
    public space: Subject<SharedService> = new BehaviorSubject<SharedService>(null);
    searchTextStream$ = this.country.asObservable();

    broadcastTextChange(text: SharedService) {
        this.space.next(text);
        this.country.next(text);
    }
}
export class SharedService {
    country: string;
    state: string;
    city: string;  
    street: string;
}

Eu não sei como implementar BehaviourSubject basicamente o que estou tentando aqui é apenas uma bagunça, eu acho e estou chamando esse valor no componente filho usando

console.log('behiob' + shared.space.single());

que está lançando um erro como .single () / last () etc, o que quer que esteja disponível não é uma função, então alguém pode me mostrar como ele realmente funciona e como implementá-lo enquanto eu procurava pelos exemplos, mas nenhum está fazendo sentido para mim.

questionAnswers(1)

yourAnswerToTheQuestion