input
秒でlabel
秒を関連付けるための正しい方法はid
Sを介して行われ、これは、動的なid
のための有効なユースケースのように見えます。
これを行うには、randNum
プロパティをインスタンス化時に作成された乱数を含むクラスに追加します。
乱数(クラスプロパティ)
randNum = Math.floor(Math.random() * 1000000000);
テンプレート今
<div class="toggle-group checkbox-group-inline btn btn-link">
<input class="tgl tgl-light" [id]="'toggle' + randNum" type="checkbox" [checked]="value" (change)="stateChange($event.target.checked)">
<label class="tgl-btn" [for]="'toggle' + randNum"></label>
</div>
、場合:次に、あなたはそうのようなユニークな識別子を作成するために、テンプレート全体でこの乱数を使用することができますこのコンポーネントが同じページに10回ある場合、コンポーネントの10個のインスタンシエーションには一意の値がrandNum
になり、目的の効果が得られます。
編集:
あなたはかなり離れてランダムな数字から滞在したい場合は、あなたがそうのようなrandNum
の基礎として静的プロパティを定義することで、一意性を確保することができますで
static num = CustomComponent.num || 0;
randNum = ++CustomComponent.num;
上記のコードでは、各コンポーネントは、インスタンス化ごとにインクリメントされるため、一意のrandNum
を持つことが保証されています。
個人的には、失敗した場合にチャンスが0.0000000000001%であっても、一意の値をランダムに使用するのは嫌です。問題は、これらのチェックボックスがハードコードされているか生成されているかどうかです。 –
@ThomasVanderVeen生成 – nick