Angular2アプリの*ngFor
の配列にボタン要素があります。クリック時のボタンの外観を変更するAngular2
ボタンの構造は次のとおりです。私はそれをクリックすると
<button>
<span class="price">{{ product.price }}</span>
<span class="text"> Add me! </span>
</button>
私はスパン.text
内のテキストを削除し、他の内部なめらか配置する必要があり、.price
スパン補間を表示しない<span class="text"> Added! </span>
を言います。
私は、次の方法でそれを作ってみました:それは正常に動作しますが、問題はそれがすべてのボタンを変更することである
private isPressed = false;
:
<button [textContent]="isPressed? 'Added!' : 'Add me' "></button>
など、クラス内の対応するプロパティを宣言同時に、クリックしたものだけを変更する必要があります。
正常に動作させる正しい方法は何ですか?
代わりに '' product.isAdded'のような意味的な変数を使用isPressed'のこの方法は、あなたがテンプレートでこのような何かを行うことができます。このようにして、ボタンの状態は問題の製品に結び付けられます。 –
なぜisPressedでは動作しませんが、isAddedではうまく動作しますか? 答えを提出してください。私はあなたの助けに投票することができます –
理由は文言ではなく、ボタンが関連する特定のオブジェクトを参照する 'product'です。多くの製品があり(そのため、ループが必要です)、製品ごとに状態が保存されます。各ボタンには、特定の製品の状態が表示されます。あなたが 'isPressed'のような一般的な変数を使用していた場合、ただ1つしかなく、すべてのボタンがそれを見ています。以下の答えはコードを調整する方法を示しています。 Upvoteそれら:-) –