在我的Angular模板中,我需要一个Object的键计数。我在模板文件中写了{{Object.keys(myObj).length}}。但是它会抛出一个错误:ERROR TypeError:无法读取属性’keys’的…
模板表达式上下文通常仅限于组件实例本身。所以当你在里面插入变量时 {{}} 它基本上会查找底层组件实例或模板引用变量的匹配属性。
{{}}
当你这样做 Object = Object 在组件中,您实际上是在创建一个属性 Object 引用全球的组成部分 Object 该组件有哪些参考。
Object = Object
Object
但是在模板表达式中也是不可能的,它除了对全局属性没有任何访问权限 undefined 。
undefined
这一部分 文档 解释了这个:
模板表达式不能引用全局命名空间中的任何内容, 除了未定义。他们不能参考窗口或文档。 此外,他们不能调用console.log()或Math.max(),他们是 仅限于引用表达式上下文的成员。
您在模板中呈现的所有内容都应该是组件的一部分,这确实有助于封装,有助于防止将来出现错误,出现意外行为并简化调试任务 另一方面,在主题之外多一点,避免使用{{}}内部的方法,因为它们充当不纯的管道,并且每次用户与DOM交互时运行几次,最好保存函数的结果,或component.ts属性中的方法,该属性是您显示的属性