如何在ngFor中实例化和使用后续数组?

li *_*i x 1 html javascript arrays typescript angular

*ngFor="let arr = ['foo', 'bar', 'sla']; let item of arr; let i = index;"
Run Code Online (Sandbox Code Playgroud)

为什么在提供arr之前的实例化时let item of arr;会引发异常,[object Object]或者为什么我不能这样做呢?

我不想做的原因let item of [...]是因为那时我还要把这些信息放到我.ts不想做的文件中.

我希望能够从我的html中返回并引用这个数组,所以我需要一种方法来引用声明的数组而不在数据文件中实例化它.

堆栈跟踪供参考:

ERROR 
Error: [object Object]
Stack trace:
resolvePromise@webpack-internal:///./node_modules/zone.js/dist/zone.js:795:31
resolvePromise@webpack-internal:///./node_modules/zone.js/dist/zone.js:766:17
scheduleResolveOrReject/<@webpack-internal:///./node_modules/zone.js/dist/zone.js:844:17
ZoneDelegate.prototype.invokeTask@webpack-internal:///./node_modules/zone.js/dist/zone.js:425:17
onInvokeTask@webpack-internal:///./node_modules/@angular/core/esm5/core.js:4956:24
ZoneDelegate.prototype.invokeTask@webpack-internal:///./node_modules/zone.js/dist/zone.js:424:17
Zone.prototype.runTask@webpack-internal:///./node_modules/zone.js/dist/zone.js:192:28
drainMicroTaskQueue@webpack-internal:///./node_modules/zone.js/dist/zone.js:602:25
Run Code Online (Sandbox Code Playgroud)

San*_*j_V 5

你需要像通常那样实例化你的数组,但之后你需要添加as它,这将允许你在html中引用数组:

*ngFor="let item of ['foo', 'bar', 'sla'] as arr; let i = index;"
Run Code Online (Sandbox Code Playgroud)

之后你可以{{arr.length}}按照预期说出来.