Angular 2が初めてで、* ngFor内のdivに動的に割り当てられたIDを与えようとしています。divはwave1、wave2、wave3と呼ばれます。 'など.
<li *ngFor="let episode of episodes; let i = index">
<div id="wave{{i}}"></div>
</li>
ただし、これにより次のエラーがスローされます。
ERROR DOMException: Failed to execute 'querySelector' on 'Document':
'#wave[object Object]' is not a valid selector.
私はまだstackoverflowでAngular 2のこの答えを見つけることができませんでした。これが重複している場合はおApび申し上げます
{{ 'wave' + i }}
の代わりにwave{{i}}
を使用できます。 Angular Experession。これは完全なngFor
です:
<li *ngFor="let episode of episodes; let i = index">
<div id="{{ 'wave' + i }}"></div>
</li>
動作し、正しいdiv
でid
を作成します
document.getElementById("wave1")
出力は次のようになります。
<div id="wave1">wave1</div>
ただし、wave0
は0から始まるので、コードはi = index
から始まることに注意してください。
あなたが持っているものは正しいですし、angular 4/5で動作するはずです。あなたは多分本当に古い、プレリリースのangular 2バージョンを使用していますか?
ここにあなたのコードと以下のコードの両方のstackblitzがあります
https://stackblitz.com/edit/angular-khur4v?file=app%2Fapp.component.html
また、そのようにすることもできますが、これが好ましい方法です
<li *ngFor="let episode of episodes; let i = index">
<div [attr.id]="'wave' + i">{{episode.name}}</div>
</li>
i
を定義する必要はありません
<li *ngFor="let episode of episodes">
<div id="wave{{episode}}">{{episode}}</div>
</li>
編集:エピソードがオブジェクトのリストの場合
<li *ngFor="let episode of episodes">
<div id="wave{{episodes.indexOf(episode)}}">{{episode.name}}</div>
</li>
私にとっては、シングルクォートを追加すれば機能します。それ以外の場合Angularは変数を検出します。
<li *ngFor="let episode of episodes; let i = index">
<div id="'wave' + i"></div>
</li>