Angular: dar a un campo componente una referencia a una función de servicio y llamarlo desde una plantilla que no funciona como se esperaba

En mi Plunker aquí (modificadoTour de héroes aplicación de documentos oficiales) Creé este método en elhero.service

  doHeroesExist(): boolean {
   console.log("doHeroesExist called..", this.heroesExist);
   alert("doHeroesExist called.." + JSON.stringify(this.heroesExist));
    return this.heroesExist;
  }

y úsalo en elapp.component clase

  ngOnInit(): void {
    //this.getHeroes();
    this.heroesExist = this.heroService.doHeroesExist;
    console.log("app ngOnInit called...", this.heroesExist);

}

como se llama elheroesExist() método en la plantilla

<button (click)="heroesExist()">Do Heroes Exist?</button>

Estoy desconcertado por su comportamiento.

Cuando hago clic en el¿Existen los héroes? botón, espero que la consola (y la ventana emergente de alerta) inicien sesión"doHeroesExist llamado ... verdadero", pero en su lugar registra todo el cuerpo de la función de servicio:

doHeroesExist llamado .. ƒ () {console.log ("doHeroesExist llamado ..", this.heroesExist); alert ("doHeroesExist llamado .." + JSON.stringify (this.heroesExist)); devuelve this.heroesExist; }

¿Por qué está pasando esto?

¿Por qué el servicio no evalúa correctamenteheroesExist = true; como se define en el constructor del servicio?

ENLACE DE PLUNKER:https://plnkr.co/edit/MBEGkqnV5kie9PB3az9K?p=preview

Respuestas a la pregunta(2)

Su respuesta a la pregunta