javascript - 在 Angular Tour of Heroes 中这个订阅方法内部发生了什么?
问题描述
我无法解决此.subscribe
方法内部发生的情况。
getHeroes(): void {
this.heroService.getHeroes()
.subscribe(heroes => this.heroes = heroes);
}
我一直认为它this.heroes = heroes
被分配到heroes:Hero[]
了英雄组件的内部。事实证明,事实并非如此。如果我更改heroes:Hero[]
为heroes:boolean
或者即使我heroes:Hero[]
完全从英雄组件中删除,我的英雄仍然会显示。并且this.heroes
仍然被分配。
有人可以解释这是怎么发生的吗?
尝试做我提到的事情并删除heroes:Hero[]
并注意英雄仍然是如何显示的。如果this.heroes = heroes
没有被分配,heroes:Hero[]
那么订阅方法内部到底发生了什么?
解决方案
我一直认为 this.heroes = hero 被分配给 heros:Hero[] 里面的英雄组件
正确。问题是,红色下划线的错误是 TypeScript 错误。如果 TS 编译器以某种方式绕过它们并无论如何构建项目,那么 JavaScript 就没有问题,例如,动态创建一个新的对象属性。
但是,生产构建应该会失败。
推荐阅读
- php - Docker PHP-Redis 和 healthcheck 的问题
- c# - 转换为字符串失败,输入字符串的格式不正确
- excel - 如何将从 SAP 提取的 Excel 文件中的数据复制到另一个 Excel 工作簿
- c# - 在 .net5.0 中 - 外部 API 响应时间太长 - httpclient
- amazon-web-services - terraform 使用 for 循环生成地图,其中包含两个不同的资源
- logging - 如何使用 TinyLog 记录运行时异常
- python - 尝试直接从编辑器读取 json 文件时发布请求错误
- mysql - 在 MySQL 中,当我们进行正向工程时,会发生此错误
- reactjs - 使用 Material UI 在网格容器中设置条件间距
- c# - 在 EF Core 数据库第一个项目中修改数据库名称