Saya menggunakan Material 2 untuk menambahkan md-raised-button
. Saya ingin menerapkan petunjuk ini hanya jika kondisi tertentu menjadi benar.
Sebagai contoh:
<button md-raised-button="true"></button>
Contoh lain: Saya membuat bentuk reaktif dinamis dasar di plunker. Saya menggunakan formArrayName
direktif bentuk reaktif untuk berbagai kontrol. Saya ingin menerapkan formArrayName
direktif hanya jika kondisi tertentu menjadi benar, jika tidak, jangan tambahkan formArrayName
direktif.
Berikut ini tautan plunker .
angular
angular-material
angular2-forms
angular2-directives
angular-material2
pengguna2899728
sumber
sumber
Jawaban:
Saya tidak tahu apakah Anda dapat menerapkan arahan berdasarkan suatu kondisi, tetapi solusinya akan memiliki 2 tombol dan menampilkannya berdasarkan suatu kondisi .
Sunting: mungkin ini akan membantu.
sumber
Jika Anda hanya perlu menambahkan atribut untuk memicu aturan CSS, Anda dapat menggunakan metode di bawah ini: (ini tidak secara dinamis membuat / menghancurkan perintah)
<button [attr.md-raised-button]="condition ? '' : null"></button>
Diterapkan sama untuk plunker Anda: garpu
Memperbarui:
Bagaimana
condition ? '' : null
bekerja sebagai nilai:Ketika string kosongnya (
''
) menjadiattr.md-raised-button=""
, ketikanull
atributnya tidak akan ada.Pembaruan: pembaruan plunker: garpu (masalah versi diperbaiki, harap perhatikan pertanyaannya awalnya berdasarkan sudut 4)
sumber
Seperti yang telah disebutkan, hal ini tampaknya tidak mungkin dilakukan. Satu hal yang paling tidak dapat digunakan untuk mencegah duplikasi adalah
ng-template
. Ini memungkinkan Anda mengekstrak konten elemen yang terpengaruh olehngIf
percabangan.Jika Anda misalnya ingin membuat komponen menu hierarki menggunakan Angular Material:
Di sini direktif yang diterapkan secara kondisional
matMenuTriggerFor
, yang seharusnya hanya diterapkan ke item menu dengan turunan. Isi tombol disisipkan di kedua tempat melaluingTemplateOutlet
.sumber
Ini mungkin datang terlambat, tetapi ini adalah metode yang layak dan elegan untuk menerapkan arahan secara bersyarat.
Di kelas direktif buat variabel input:
Saat menerapkan direktif, setel properti apply dari variabel input:
Dalam metode pemeriksaan direktif untuk variabel this.options.apply dan terapkan logika direktif berdasarkan kondisi:
sumber
Seperti orang lain juga menyatakan,
directives
tidak dapat diterapkan secara dinamis.Namun, jika Anda hanya ingin mengubah
md-button
gaya dari datar menjadi terangkat , maka iniakan berhasil. Plunker
sumber
Ini juga bisa menjadi solusi:
[md-raised-button]="condition ? 'true' : ''"
Ini bekerja untuk sudut 4, ionik 3 seperti ini:
[color]="condition ? 'primary' : ''"
di manacondition
fungsi yang memutuskan apakah ini halaman aktif atau tidak. Seluruh kode terlihat seperti ini:<button *ngFor="let page of ..." [color]="isActivePage(page) ? 'primary' : ''">{{ page.title }}</button>
sumber
Saat ini, ada
NO
cara untuk menerapkan arahan bersyarat ke sebuah komponen. Ini tidak didukung. Komponen yang telah Anda buat dapat ditambahkan atau dihapus secara bersyarat.Sudah ada masalah yang dibuat untuk hal yang sama dengan
angular2
, jadi itu harus terjadi dengan angular4 juga.Sebagai alternatif, Anda dapat menggunakan opsi ng-if
sumber
Saya tidak dapat menemukan solusi bagus yang ada, jadi saya membuat arahan saya sendiri yang melakukan ini.
Kemudian html Anda:
<div dynamic-attr="{{hasMargin: 'margin-left' ? ''}}"></div>
sumber
@HostBinding('attr.dynamic-attr') @Input('dynamic-attr') attr: string;
pengganti ngOnInit + ElementRef.Mungkin itu akan membantu seseorang.
Dalam contoh di bawah ini saya memiliki
my-button.component.html
dan saya ingin menerapkan*appHasPermission
direktif<button>
hanya jikarole
atributnya disetel.Dengan cara itu Anda tidak menduplikasi
<button>
kode.sumber
ya itu mungkin.
html dengan direktif appActiveAhover :)
pengarahan
sumber
Meneruskan
null
ke arahan menghapusnya!sumber
Menggunakan
NgClass
contoh kondisi sebenarnya:
atau fungsi boolean
contoh lengkap:
Jika Anda menginginkan kelas default:
sumber
md-raised-button
atribut sebagai false)Saya mendapat ide lain tentang apa yang dapat Anda lakukan.
Anda dapat menyimpan html yang ingin Anda ganti dalam variabel sebagai string dan kemudian menambahkan / menghapus arahan darinya sesuai keinginan, menggunakan
bypassSecurityTrustHtml
metode DomSanitizer .Saya tidak menghasilkan solusi yang bersih tetapi setidaknya Anda tidak perlu mengulangi kode.
sumber
Pada 18 Jan 2019, Beginilah cara saya menambahkan arahan bersyarat di Angular 5 ke atas. Saya perlu mengubah warna
<app-nav>
komponen berdasarkandarkMode
. Jika halaman dalam mode gelap atau tidak.Ini berhasil untuk saya:
<app-nav [color]="darkMode ? 'orange':'green'"></app-nav>
Saya harap ini membantu seseorang.
EDIT
Ini mengubah nilai atribut (warna) berdasarkan suatu kondisi. Kebetulan warna ditentukan menggunakan arahan. Jadi siapa pun yang membaca ini mohon jangan bingung, ini tidak menerapkan arahan bersyarat (yaitu yang berarti menambah atau menghapus arahan ke dom berdasarkan suatu kondisi)
sumber