0
I have a service that performs a get at a certain address.
@Injectable({
  providedIn: 'root'
})
export class PersonService {
  private person: Observable<Person>;
  personBroadcast = new EventEmitter();
  constructor(private http: HttpClient) { }
  getPersonByCode(code: number): Observable<Person> {
    this.person = this.http.get<Person>(environment.urlHumanResourceService + 'api/person/code/' + code);
    this.personBroadcast.emit(this.person);
    return this.person;
  }
}
I’m using it in the following component:
export class PatientComponent implements OnInit {
  private person: Person;
  constructor(private personService: PersonService) { }
  ngOnInit() {
  }
  onEnter(value: number) { this.getPersonByCode(value);  }
  public getPersonByCode(code: number) {
    this.personService.getPersonByCode(code).subscribe((data: Person) => {
      this.person = data;
    });
  }
}
Up to this point everything is working as expected, but I need to use some data of the result of this get in another component. Searching I found the solution to use an Eventemitter to communicate the get result.
export class AttendanceComponent implements OnInit {
  private attendance: Attendance;
  private person: Person;
  constructor(private personService: PersonService) { }
  ngOnInit() {
    this.personService.personBroadcast.subscribe((data: Person) => {
      this.person = data;
    });
  }
  newClinicalAppointment(observation: string) {
    console.log(this.person);
    this.attendance = new Attendance(
      null,
      null,
      this.person,
      new Date,
      AttendanceTypes.ClinicalAppointment,
      observation
    );
  }
}
Testing I’m getting an observable object and can’t subscribe access to the data I expected. I tested by passing an object created in hand in Emit() and in this case I was successful.
What was done wrong? The solution I’m using for this problem is the best approach?
Event emmiter and a child component for a parent to make this communication between services better use Behavior Subject
– Eduardo Vargas
Take a look at my answer https://answall.com/questions/305588/sharedataintercomponents-angular-6/305989#305989
– Eduardo Vargas