Saya perlu menginterpolasi nilai di dalam ngClass
ekspresi tetapi saya tidak bisa membuatnya berfungsi.
Saya mencoba solusi ini yang merupakan satu-satunya yang masuk akal bagi saya, keduanya gagal dengan interpolasi:
<button [ngClass]="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
<button [ngClass]="{namespace + '-mybutton': type === 'mybutton'}"></button>
Yang ini bekerja dengan interpolasi tetapi gagal dengan kelas yang ditambahkan secara dinamis karena seluruh string ditambahkan sebagai kelas:
<button ngClass="{'{{namespace}}-mybutton': type === 'mybutton'}"></button>
Jadi pertanyaan saya adalah bagaimana Anda menggunakan nama kelas dinamis ngClass
seperti ini?
Yang ini harus bekerja
tapi Angular menggunakan sintaks ini. Saya akan menganggap ini bug. Lihat juga https://stackoverflow.com/a/36024066/217408
Yang lainnya tidak valid. Anda tidak dapat menggunakan
[]
bersama dengan{{}}
. Salah satunya.{{}}
mengikat hasil yang dirangkai yang tidak mengarah ke hasil yang diinginkan dalam kasus ini karena sebuah objek perlu diteruskanngClass
.Contoh Plunker
Sebagai solusinya, sintaks yang ditunjukkan oleh @A_Sing atau
dapat digunakan.
sumber
Berikut adalah contoh dari sesuatu yang saya lakukan untuk beberapa kelas dengan banyak kondisi :
[ngClass]="[variableInComponent || !anotherVariableInComponent ? classes.icon.large : classes.icon.small, editing ? classes.icon.editing : '']"
di mana:
classes
adalah objek yang berisi string berbagai nama kelas. misalnyaclass.icon.large = "app__icon--large"
Ini dinamis! Pembaruan sebagai pembaruan kondisi.
sumber
saya ingin menyebutkan beberapa hal penting yang perlu diingat saat menerapkan pengikatan kelas.
kelas di sini tidak mengikat dengan benar karena satu kondisi harus dipenuhi, sedangkan Anda memiliki dua kelas identik 'peringatan-lencana' yang mungkin memiliki dua kondisi berbeda. Untuk memperbaikinya
sumber
sumber
Kamu bisa memakai
<i [className]="'fa fa-' + data?.icon"> </i>
sumber