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?