Angular 角度服务被引用但未被调用,但仍然是;“返回”;正确值

Angular 角度服务被引用但未被调用,但仍然是;“返回”;正确值,angular,this,angular-services,angular-components,Angular,This,Angular Services,Angular Components,,我对Angular.io教程做了一个小修改 我已向heroes.service添加了一个名为doheroESist的函数。 然而,我从来没有这样称呼它。我所做的唯一一件事是将其分配给app.component ngOnInit(): void { //this.getHeroes(); this.heroesExist = this.heroService.doHeroesExist; console.log("app ngOnInit called...", th

,我对Angular.io教程做了一个小修改

我已向heroes.service添加了一个名为
doheroESist
的函数。 然而,我从来没有这样称呼它。我所做的唯一一件事是将其分配给
app.component

  ngOnInit(): void {
    //this.getHeroes();
    this.heroesExist = this.heroService.doHeroesExist;
    console.log("app ngOnInit called...", this.heroesExist);  // outputs: app ngOnInit called... true
  }
这里是
hero.service.ts
文件中的
doheroesist
函数

  doHeroesExist(): boolean {
    console.log("doHeroesExist called..", this.doHeroesExist);
    return this.doHeroesExist;
  }
我很困惑

为什么控制台日志中会显示true?它不应该将函数体作为字符串输出吗?另外,
doheroESist
中的console.log从未打印过-进一步证明它没有被调用

编辑:

您忘记提到您在服务中定义了:

  doHeroesExist: boolean; 

  constructor() {
    this.doHeroesExist = true;
  }
使用相同名称的成员方法和成员字段不是一个好主意

无论
doheroESist
was(函数、其他变量…)的定义是什么,在构造函数中,您只需将
true
的值赋给它即可。因此它变成一个
布尔值
,值为
true


就这样。由于名称冲突,我很惊讶它会编译,但无论如何,这种行为显然是由您的构造函数造成的。

感谢您的帮助回答并指出了这些问题。我现在意识到我实际上把问题搞砸了。我做了一些更改,并在此处重新询问: