首页 > 解决方案 > 在 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[]那么订阅方法内部到底发生了什么?

标签: javascriptangulartypescriptsubscribe

解决方案


我一直认为 this.heroes = hero 被分配给 heros:Hero[] 里面的英雄组件

正确。问题是,红色下划线的错误是 TypeScript 错误。如果 TS 编译器以某种方式绕过它们并无论如何构建项目,那么 JavaScript 就没有问题,例如,动态创建一个新的对象属性。

但是,生产构建应该会失败。


推荐阅读