我有一个名为records
的变量,
现在我想检查它是否是angular2/typescript中的数组?
在AngularJS中,我经常做以下事情:
ng-if="selectedCol.data && !isArray(selectedCol.data)"
但是当我试图做以下事情时,它不起作用;
*ngIf="selectedCol.model.data && !Array.isArray(selectedCol.model.data)"
它给我下面的错误:
TypeError:无法读取任何未定义输入的属性'isArray'?
4条答案
按热度按时间5n0oy7gb1#
Angular 2模板是在
Component
的上下文中执行的,这意味着,您只能访问在Component
中定义的属性/方法最简单的方法是在
Component
中定义isArray
方法在模板中
isArray
方法定义服务,注册为Singleton,注入到Component
中并通过Service属性使用isArray
方法 *或者,在
Component
中定义_array
属性并为其分配Array
类型在模板中
zf2sa74q2#
虽然
[].constructor.isArray
不是最有效的解决方案(请参阅另一个答案),但它适用于任何表达式上下文,并且不需要用语言级的helper来污染组件类:b4qexyjb3#
除了@tchelidze所说的:
Angular 2在
facade/lang
中提供了一个名为isArray
的 Package 器,导出和定义如下:您可以将它导入到组件中,如下所示:
然后,您可以在组件中公开它:
this.isArray = isArray
并在模板中使用,如下所示:
*ng-if="selectedCol.data && !isArray(selectedCol.data)"
wixjitnu4#
是数组.管道.ts
应用程序.组件.html