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)
你需要像通常那样实例化你的数组,但之后你需要添加as它,这将允许你在html中引用数组:
*ngFor="let item of ['foo', 'bar', 'sla'] as arr; let i = index;"
Run Code Online (Sandbox Code Playgroud)
之后你可以{{arr.length}}按照预期说出来.