Angular服务被引用但未被调用,但仍然“返回”正确的值

时间:2017-10-09 22:42:44

标签: angular this angular-services angular-components

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
  }

这是doHeroesExist文件中的hero.service.ts函数。

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

我很困惑。

为什么在控制台日志中会说 true ?它不应该输出函数的主体作为字符串?此外,doHeroesExist内的console.log永远不会被打印 - 进一步证明它没有被调用!

1 个答案:

答案 0 :(得分:1)

编辑:

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

  doHeroesExist: boolean; 

  constructor() {
    this.doHeroesExist = true;
  }

拥有成员方法和具有相同名称的成员字段不是一个好主意......

无论doHeroesExist的定义是什么(函数,其他变量......),在构造函数中只需为其赋值true。因此它变为boolean,其值为true

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