【发布时间】:2017-05-01 22:34:10
【问题描述】:
当我使用ng serve 时,一切正常。当我使用ng serve --prod --aot 时,它会抱怨Type 'any[]' cannot be used as an index type。我找不到任何可以修复它的东西。并且它似乎所指的“type any[]”是 tags 变量,因为当我将其注释掉时,一切都会编译。
以下是相关代码:
//cluster-details.component.ts
...
export class ClusterDetailsComponent implements OnInit {
infoTitles = {
edgeNodePublicDNS: 'Edge Node Public DNS',
...
tags: 'Tags'
};
infoKeys: string[];
info: any;
tags: any[];
...
this.requestsService.emrinstanceDetailsGET(body)
.subscribe(
(data) => {
this.infoKeys = Object.keys(data);
this.info = data;
...
cluster-details.component.html:
<tr *ngFor="let key of infoKeys">
<td>
<strong>{{ infoTitles[key] }}:</strong>
</td>
<td>
{{info[key]}}
</td>
</tr>
<tr>
<td>
<strong>{{ infoTitles[tags] }}:</strong>
</td>
<td>
{{tags}}
</td>
</tr>
请求返回的数据如下:
.map(
(response: Response) => {
const data = response.json();
return data['clusterDetail'];
现在我知道'只是不要让它输入'any[]',但我不知道该怎么做。返回的是一个 JSON 值,它只是一个 Object 类型。将类型更改为 Object 不起作用,我没有看到任何其他类型的工作。也许我必须为它制作一个界面?
【问题讨论】:
-
info 变量在上面显示为
any类型。如果你把它改成any[],你会得到同样的错误吗? -
我确实得到了同样的错误,如果我使用 Object 或 Object[]。它也仍然适用于
ng serve与这四个中的任何一个。
标签: angular typescript