2017-05-01 12 views
1

ng serveを使用している場合はすべて動作します。私がng serve --prod --aotを使用すると、それはType 'any[]' cannot be used as an index typeと文句を言う。それを修正できるものは何も見つかりませんでした。参照していると思われる 'any any []'は、タグ変数です。なぜなら、コメントアウトするとすべてがコンパイルされるからです。タイプ 'any []'をインデックスタイプとして使用することはできません。

ここに関連するコードです:

//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; 
... 

クラスタ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']; 

は、今私は知っています「ちょっとタイプしないでください」と言われましたが、どうしたらいいか分かりませんでした。返されるのは、単なるObject型のJSON値です。タイプをObjectに変更しても機能しませんでした。他のタイプのものは表示されません。たぶん私はそれのためのインターフェイスを作成する必要がありますか?

+0

上記の情報変数は、上記の「any」型として示されています。それを 'any []'に変更すれば同じエラーになりますか? – DeborahK

+0

ObjectまたはObject []を使用した場合と同じエラーが発生します。それはまだ4つのうちのどれかで 'ng serve 'だけで動作します。 – canada11

答えて

0

はそれを考え出しました。

HTML行...{{ infoTitles[tags] }}...は、タグ変数を使用してinfoTitlesのインデックスを作成しようとしています。これは、単に「タグ」という文字列であり、これはinfoTitlesを正しく参照することを意味しています。私が必要とする価値しかし、私はタグ配列を使用していることに気付かなかった。だから修正はちょうどtagIndexString = 'tags'のような文字列または変数を使用する必要があります。...{{ infoTitles[tagIndexString] }}...

0

私は、特定のタイプを指定しなかったのに 'infoTitles [key]'、オブジェクト[name](AOTはあなたが配列構文を使用していることを前提としています)コンパイルエラーが発生しました。解決策:あなたは、クラスを作成する必要が

infoTitles: InfoTitle = { 
    edgeNodePublicDNS: 'Edge Node Public DNS', 
    ... 
    tags: 'Tags' 
}; 

export class InfoTitle { 
    edgeNodePublicDNS: string; 
    ... 
    tags: string; 
} 
+0

これでエラーは修正されませんでしたが、コードは追加された後でも機能しました。タグの変数をもう一度見て、それは実際にどこにエラーがあるようです。タグはJSONオブジェクトの配列として入ってくるので、それらを解析して表示しようとします。私はそれを働かせるためにそれで働くことができないかどうかを見極めるつもりです。 – canada11

関連する問題