【问题标题】:Angular service is referenced but not called, yet still "returns" correct valueAngular 服务被引用但未被调用,但仍然“返回”正确的值
【发布时间】:2018-03-21 05:31:33
【问题描述】:

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

我在 heros.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 也从未打印过 - 进一步证明它没有被调用!

【问题讨论】:

    标签: angular this angular-services angular-components


    【解决方案1】:

    编辑:

    你忘了提到你在你的服务中定义了那个:

      doHeroesExist: boolean; 
    
      constructor() {
        this.doHeroesExist = true;
      }
    

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 1970-01-01
    • 2020-06-17
    • 2013-10-23
    相关资源
    最近更新 更多