Angular 服务被引用但未被调用,但仍然 "returns" 正确值

Angular service is referenced but not called, yet still "returns" correct value

In this Plunk,我对Angular.io教程做了一些小修改。

我在 heroes.service 中添加了一个名为 doHeroesExist 的函数。 但是,我从不称呼它。我唯一做的就是将它分配给 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 文件中的 doHeroesExist 函数。

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

我很纳闷。

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

编辑:

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

  doHeroesExist: boolean; 

  constructor() {
    this.doHeroesExist = true;
  }

成员方法和成员字段同名不是个好主意...

无论 doHeroesExist 的定义是 (function, other variable...) ,在您的构造函数中,您只需为其分配 true 的值。所以它变成了一个boolean,值为true

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