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