behaviourSubject en angular2, cómo funciona y cómo usarlo

Estoy tratando de construir un servicio compartido de la siguiente manera

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;
}

No sé cómo implementar BehaviourSubject, básicamente, lo que estoy tratando aquí es solo un desastre, supongo, y estoy llamando a este valor en el componente secundario mediante el uso de

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

que arroja un error como .single () / last (), etc. lo que esté disponible no es una función, por lo que alguien puede mostrarme cómo funciona realmente y cómo implementarlo mientras buscaba los ejemplos, pero ninguno tiene sentido para mí.

Respuestas a la pregunta(1)

Su respuesta a la pregunta