Arahan mungkin merupakan sedikit aplikasi sudut yang paling penting, dan jika kita memikirkannya, unit sudut yang paling banyak digunakan, komponen, sebenarnya adalah arahan.
Komponen sudut tidak lebih daripada arahan dengan templat. Apabila kita mengatakan bahawa komponen adalah blok bangunan aplikasi sudut, kita sebenarnya mengatakan bahawa arahan adalah blok bangunan aplikasi sudut.
Takeaways Key
Secara lalai, dari versi sudut 2 dan seterusnya, arahan sudut dipisahkan kepada tiga jenis yang berbeza:
Komponen
Dua jenis arahan yang lain tidak mempunyai templat. Sebaliknya, mereka khusus disesuaikan dengan manipulasi DOM.
arahan atribut
Kami menggunakan arahan atribut untuk menggunakan gaya bersyarat kepada unsur -unsur, menunjukkan atau menyembunyikan unsur -unsur atau mengubah secara dinamik tingkah laku komponen mengikut harta yang berubah.
Ini khusus disesuaikan untuk mencipta dan memusnahkan elemen dom.
Beberapa arahan atribut - seperti tersembunyi, yang menunjukkan atau menyembunyikan elemen - pada dasarnya mengekalkan DOM seperti itu. Tetapi arahan sudut struktur adalah kurang mesra DOM, kerana mereka menambah atau menghapuskan unsur -unsur dari DOM. Oleh itu, apabila menggunakannya, kita perlu berhati -hati, kerana kita sebenarnya mengubah struktur HTML.
Menggunakan arahan yang sedia ada dalam sudut adalah agak mudah, dan jika anda telah menulis aplikasi sudut pada masa lalu, saya cukup yakin anda telah menggunakannya. Arahan NGClass adalah contoh yang baik dari arahan atribut sudut yang ada:
<span><span><span><p</span> [ngClass]<span>="{'blue'=true, 'yellow'=false}"</span>></span> </span> Angular Directives Are Cool! <span><span><span></p</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span><span>.blue</span>{color: blue} </span></span></span><span><span> <span><span>.yellow</span>{color: yellow} </span></span></span><span><span></span><span><span></style</span>></span> </span>
Jadi, dengan menggunakan arahan NGCLASS pada contoh di bawah, kami sebenarnya menambah kelas biru ke perenggan kami, dan secara eksplisit tidak menambah kuning. Oleh kerana kita mengubah rupa kelas, dan tidak mengubah struktur HTML sebenar, ini jelas merupakan arahan atribut. Tetapi Angular juga menawarkan arahan struktur luar, seperti NGIF:
@Component({ selector: 'ng-if-simple', template: ` <span><span><span><button</span> (click)<span>="show = !show"</span>></span>{{show ? 'hide' : 'show'}}<span><span></button</span>></span> </span> show = {{show}} <span><span><span><br</span>></span> </span> <span><span><span><div</span> *ngIf<span>="show"</span>></span>Text to show<span><span></div</span>></span> </span>` }) class NgIfSimple { show: boolean = true; }
Dalam contoh ini, kami menggunakan Arahan NGIF untuk menambah atau mengeluarkan teks menggunakan butang. Dalam kes ini, struktur HTML itu sendiri terjejas, jadi jelas arahan struktur.
Untuk senarai lengkap arahan sudut yang tersedia, kami boleh menyemak dokumentasi rasmi.
seperti yang kita lihat, menggunakan arahan sudut agak mudah. Kuasa sebenar arahan sudut datang dengan keupayaan untuk mencipta sendiri. Angular menyediakan API yang bersih dan mudah untuk membuat arahan tersuai, dan itulah yang akan kita lihat di bahagian berikut.
Membuat arahan adalah serupa dengan membuat komponen. Tetapi dalam kes ini, kami menggunakan penghias @directive. Sebagai contoh kami, kami akan membuat arahan yang dipanggil "my-error-directive", yang akan menyerlahkan dengan warna merah latar belakang elemen untuk menunjukkan kesilapan.
Sebagai contoh kami, kami akan menggunakan pakej QuickStart Angular 2. Kami hanya perlu mengklon repositori, kemudian jalankan pemasangan NPM dan NPM bermula. Ia akan memberi kita aplikasi boilerplate yang boleh kita gunakan untuk mencuba. Kami akan membina contoh kami di atas boilerplate itu.
mari kita mulakan dengan membuat fail yang dipanggil app.myerrordirective.ts pada folder SRC/APP dan menambah kod berikut kepadanya:
import {Directive, ElementRef} from '@angular/core'; @Directive({ selector:'[my-error]' }) export class MyErrorDirective{ constructor(elr:ElementRef){ elr.nativeElement.style.background='red'; } }
Selepas mengimport arahan dari @angular/teras, kami boleh menggunakannya. Pertama, kita memerlukan pemilih, yang memberikan nama kepada arahan. Dalam kes ini, kita menyebutnya rata saya.
Amalan terbaik menentukan bahawa kita sentiasa menggunakan awalan ketika menamakan arahan sudut kita. Dengan cara ini, kami pasti mengelakkan konflik dengan sebarang atribut HTML standard. Kami juga tidak boleh menggunakan awalan NG. Itu yang digunakan oleh Angular, dan kami tidak mahu mengelirukan arahan sudut yang dibuat khas dengan orang yang telah ditentukan oleh Angular. Dalam contoh ini, awalan kami adalah saya-.
Kami kemudian mencipta kelas, myerrordirective. Untuk mengakses mana -mana elemen DOM kita, kita perlu menggunakan ElementRef. Oleh kerana ia juga tergolong dalam pakej @angular/teras, ia adalah satu perkara yang mudah untuk mengimportnya bersama -sama dengan arahan dan menggunakannya.
Kami kemudian menambahkan kod untuk benar -benar menyerlahkan pembina kelas kami.
Untuk dapat menggunakan arahan yang baru diwujudkan ini, kita perlu menambahkannya kepada pengisytiharan pada fail app.module.ts:
<span><span><span><p</span> [ngClass]<span>="{'blue'=true, 'yellow'=false}"</span>></span> </span> Angular Directives Are Cool! <span><span><span></p</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span><span>.blue</span>{color: blue} </span></span></span><span><span> <span><span>.yellow</span>{color: yellow} </span></span></span><span><span></span><span><span></style</span>></span> </span>
Akhirnya, kami ingin menggunakan arahan yang baru saja kami buat. Untuk melakukan itu, mari kita navigasi ke fail app.component.ts dan tambahkan yang berikut:
@Component({ selector: 'ng-if-simple', template: ` <span><span><span><button</span> (click)<span>="show = !show"</span>></span>{{show ? 'hide' : 'show'}}<span><span></button</span>></span> </span> show = {{show}} <span><span><span><br</span>></span> </span> <span><span><span><div</span> *ngIf<span>="show"</span>></span>Text to show<span><span></div</span>></span> </span>` }) class NgIfSimple { show: boolean = true; }
Hasil akhir kelihatan serupa dengan ini:
Untuk arahan struktur kami, kami akan melaksanakan salinan Arahan NGIF. Dengan cara ini, kita bukan sahaja akan melaksanakan arahan, tetapi juga melihat bagaimana arahan sudut mengendalikan perkara di belakang tabir.
mari kita mulakan dengan fail app.mycustomifdirective.ts kami:
import {Directive, ElementRef} from '@angular/core'; @Directive({ selector:'[my-error]' }) export class MyErrorDirective{ constructor(elr:ElementRef){ elr.nativeElement.style.background='red'; } }
Arahan Dapatkan akses ke bekas pandangan dengan menyuntik ViewContainerRef. Pandangan tertanam dicipta dan dilampirkan pada bekas pandangan dengan memanggil kaedah CreateembedDedView ViewContainerRef dan lulus dalam templat. Kami mahu menggunakan templat arahan kami dilampirkan sehingga kami lulus di TemplateF yang disuntik.Seterusnya, kami menambahkannya kepada pengisytiharan kami:- dari latihan rangle.io's angular 2
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { MyErrorDirective } from './app.myerrordirective'; import { AppComponent } from './app.component'; @NgModule({ imports: [ BrowserModule ], declarations: [ AppComponent, MyErrorDirective ], bootstrap: [ AppComponent ] }) export class AppModule { }
<span><span><span><p</span> [ngClass]<span>="{'blue'=true, 'yellow'=false}"</span>></span> </span> Angular Directives Are Cool! <span><span><span></p</span>></span> </span> <span><span><span><style</span>></span><span> </span></span><span><span> <span><span>.blue</span>{color: blue} </span></span></span><span><span> <span><span>.yellow</span>{color: yellow} </span></span></span><span><span></span><span><span></style</span>></span> </span>
jenis pendekatan yang disediakan oleh arahan struktur boleh sangat berguna, seperti ketika kita perlu menunjukkan maklumat yang berbeza untuk pengguna yang berbeza berdasarkan keizinan mereka. Sebagai contoh, pentadbir tapak harus dapat melihat dan mengedit segala -galanya, sementara pengguna biasa tidak seharusnya. Jika kami memuatkan maklumat peribadi ke dalam DOM menggunakan arahan atribut, pengguna biasa dan semua pengguna untuk perkara itu akan mendapat akses kepadanya.
kami telah melihat atribut dan arahan struktur. Tetapi bilakah kita harus menggunakan satu atau yang lain?
Jawapannya mungkin mengelirukan dan kita boleh menggunakan yang salah hanya kerana ia menyelesaikan masalah kita. Tetapi ada peraturan mudah yang dapat membantu kita memilih yang betul. Pada asasnya, jika elemen yang mempunyai arahan itu masih berguna di DOM apabila DOM tidak dapat dilihat, maka kita pasti akan menyimpannya. Dalam kes ini, kami menggunakan arahan atribut seperti Tersembunyi. Tetapi jika elemen tidak menggunakannya, maka kita harus mengeluarkannya. Walau bagaimanapun, kita perlu berhati -hati untuk mengelakkan beberapa perangkap biasa. Kita perlu mengelakkan perangkap selalu menyembunyikan unsur -unsur hanya kerana ia lebih mudah. Ini akan menjadikan DOM lebih kompleks dan mungkin memberi kesan kepada prestasi keseluruhan. Perangkap sentiasa menghilangkan dan mencipta semula unsur -unsur juga harus dielakkan. Ia pasti lebih bersih, tetapi datang dengan mengorbankan prestasi.
Semua dalam semua, setiap kes harus dianalisis dengan teliti, kerana penyelesaian yang ideal adalah yang mempunyai kesan paling sedikit ke atas struktur, tingkah laku dan prestasi anda. Penyelesaian itu mungkin sama ada arahan atribut, arahan struktur atau, dalam senario yang paling biasa, kompromi antara kedua -dua mereka.
Dalam artikel ini, kami melihat arahan sudut, teras aplikasi sudut. Kami melihat pelbagai jenis arahan dan melihat bagaimana untuk mencipta yang sesuai dengan keperluan kami.
Saya harap artikel ini dapat membawakan anda dan berjalan dengan arahan sudut. Sekiranya anda mempunyai sebarang pertanyaan, jangan ragu untuk menggunakan bahagian komen di bawah.
Mewujudkan arahan tersuai dalam sudut melibatkan beberapa langkah. Pertama, anda perlu mengimport penghias arahan dari teras sudut. Kemudian, anda perlu menentukan kelas arahan dan menghiasi dengan penghias @directive. Hartanah pemilih dalam penghias harus sepadan dengan nama yang anda mahu gunakan untuk arahan anda. Akhirnya, anda perlu menambah arahan anda ke array pengisytiharan di ngmodule anda.
Apakah perbezaan antara arahan dan komponen dalam sudut? arahan yang mempunyai templat dan terikat dengan pandangan tertentu. Sebaliknya, arahan adalah cara untuk menambah tingkah laku kepada elemen di DOM. Walaupun komponen digunakan untuk membuat widget UI, arahan digunakan untuk menambah tingkah laku kepada unsur -unsur yang ada. Dalam beberapa cara. Salah satu cara yang biasa adalah melalui pengikatan harta, di mana anda mengikat harta elemen DOM ke harta komponen anda. Anda juga boleh menggunakan peristiwa yang mengikat untuk bertindak balas terhadap tindakan pengguna, atau mengikat dua arah untuk memastikan model dan pandangan anda disegerakkan. Dalam sudut melibatkan membuat komponen ujian yang menggunakan arahan, dan kemudian menguji komponen tersebut. Anda boleh menggunakan utiliti testbed untuk membuat komponen ujian dinamik, dan kemudian gunakan komponenfixture untuk berinteraksi dengan komponen dan arahannya. > Ya, anda boleh menggunakan pelbagai arahan pada satu elemen dalam sudut. Walau bagaimanapun, anda harus sedar bahawa urutan di mana arahan digunakan boleh menjejaskan hasil akhir. Angular memohon arahan mengikut urutan yang disenaraikan dalam templat, jadi anda harus menyenaraikan arahan anda mengikut urutan yang anda mahu mereka digunakan. 🎜> Anda boleh lulus parameter ke arahan dalam sudut menggunakan penghias @input. Ini membolehkan anda mengikat harta arahan anda kepada nilai dalam komponen anda. Anda kemudian boleh menggunakan nilai ini di dalam arahan anda untuk mengawal kelakuannya. dalam modul bersama. Anda kemudiannya boleh mengimport modul bersama ini ke mana -mana modul lain di mana anda mahu menggunakan Arahan. Ini membolehkan anda menggunakan semula arahan yang sama merentasi pelbagai komponen atau modul.
Atas ialah kandungan terperinci Panduan praktikal untuk menggunakan dan membuat arahan sudut - sitepoint. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!