为什么需要在Component中编写Object = Object才能在Angular中获取Object.keys?

shy*_*.me 8 javascript angular angular6

在我的Angular模板中,我需要一个对象的键计数。我正在写{{ Object.keys(myObj).length }}模板文件。但这会引发错误:ERROR TypeError: Cannot read property 'keys' of undefined

然后,从互联网上我得到了一个建议,因此我Object = Object在组件中编写了代码,并成功了。

  1. 我不明白这背后的哲学是什么。
  2. 花括号中的其他表达式和语句如何在Angular模板中工作?

Ful*_*Guy 9

模板表达式上下文通常仅限于组件实例本身。因此,当您在内部插入变量时,{{}}它实际上将寻找基础组件实例或模板引用变量的匹配属性。

当您对Object = Object组件进行操作时,实际上是在创建Object组件的属性,该属性引用该组件所引用的全局Object变量。

但是在模板表达式中不可能做到这一点,除了之外,它不能访问全局属性undefined

文档的这一部分对此进行了解释:

模板表达式不能引用全局命名空间中的任何内容,除非未定义。他们不能引用窗口或文档。此外,它们不能调用console.log()或Math.max(),并且只能引用表达式上下文的成员。