When should I use asObservable() in BehaviorSubject?

Note: You can have a look at just Approach 1 and Approach 2 parts that are the only differences between two approaches:

I use the following approach in order to notify the other component in my Angular app:

@Injectable()
export class DataService {        

    private eventTracker = new BehaviorSubject<any>();

    // ??? Approach 1 
    getEvent(): BehaviorSubject<any> {
        return this.eventTracker;
    }

    setEvent(param: any) {
        this.eventTracker.next(param);
    }      
}



export class DemoComponent implements OnInit {

    subscription;

    ngOnInit() {
        subscription = dataService.getEvent().subscribe((param: any) => {
            //do what ever needs doing when data changes
        });
    }

    //update the value of data in the service
    this.eventProxyService.setEvent(param);
}

On the other hand there are similar usages via Observable as shown below (posted on Angular BehaviorSubject Service):

@Injectable()
export class DataService {

    private eventTracker = new BehaviorSubject<any>();

    // ??? Approach 2 
    data = this.eventTracker.asObservable();

    setEvent(param: any){
        this.eventTracker.next(data);
    }      
}





export class DemoComponent implements OnInit {

    subscription;

    ngOnInit() {
        dataService.data.subscribe(data => {
          //do what ever needs doing when data changes
        })
    }

    //update the value of data in the service
    dataService.updateData(newData);
}

What are the differences, pros and cons between two approaches above?

Source: New feed
Source Url When should I use asObservable() in BehaviorSubject?