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永远不会被打印 - 进一步证明它没有被调用!
答案 0 :(得分:1)
编辑:
您忘了提及您已在服务中定义:
doHeroesExist: boolean;
constructor() {
this.doHeroesExist = true;
}
拥有成员方法和具有相同名称的成员字段不是一个好主意......
无论doHeroesExist
的定义是什么(函数,其他变量......),在构造函数中只需为其赋值true
。因此它变为boolean
,其值为true
。
那就是它。由于名称冲突,我很惊讶它编译,但无论如何,行为显然是由你的构造函数引起的。