Saya mencoba memahami Angular (kadang-kadang disebut Angular2 +), kemudian saya menemukan @Module
:
Impor
Deklarasi
Penyedia
Mengikuti Mulai Cepat Sudut
sumber
Saya mencoba memahami Angular (kadang-kadang disebut Angular2 +), kemudian saya menemukan @Module
:
Impor
Deklarasi
Penyedia
Mengikuti Mulai Cepat Sudut
Konsep Sudut
imports
membuat deklarasi yang diekspor dari modul lain tersedia di modul saat inideclarations
adalah untuk membuat arahan (termasuk komponen dan pipa) dari modul saat ini tersedia untuk arahan lain dalam modul saat ini. Penyeleksi arahan, komponen atau pipa hanya cocok dengan HTML jika dinyatakan atau diimpor.providers
adalah untuk membuat layanan dan nilai diketahui oleh DI (injeksi ketergantungan). Mereka ditambahkan ke lingkup root dan mereka disuntikkan ke layanan atau arahan lain yang menjadikannya sebagai ketergantungan.Kasus khusus untuk providers
modul yang dimuat malas yang mendapatkan injektor anak mereka sendiri.providers
dari modul lazy loaded hanya disediakan untuk modul lazy loaded ini (tidak seluruh aplikasi seperti halnya dengan modul lain).
Untuk detail lebih lanjut tentang modul, lihat juga https://angular.io/docs/ts/latest/guide/ngmodule.html
exports
membuat komponen, arahan, dan pipa tersedia dalam modul yang menambahkan modul ini imports
. exports
juga dapat digunakan untuk mengekspor kembali modul seperti CommonModule dan FormsModule, yang sering dilakukan dalam modul bersama.
entryComponents
mendaftarkan komponen untuk kompilasi offline sehingga dapat digunakan bersama ViewContainerRef.createComponent()
. Komponen yang digunakan dalam konfigurasi router ditambahkan secara implisit.
Impor TypeScript (ES2015)
import ... from 'foo/bar'
(yang mungkin berubah menjadiindex.ts
berubah ) adalah untuk impor TypeScript. Anda memerlukan ini setiap kali Anda menggunakan pengidentifikasi dalam file naskah yang dinyatakan dalam file naskah lain.
Angular @NgModule()
imports
dan TypeScript import
adalah konsep sama sekali berbeda .
Lihat juga jDriven - sintaks impor TypeScript dan ES6
Sebagian besar dari mereka sebenarnya sintaks modul ECMAScript 2015 (ES6) polos yang menggunakan TypeScript juga.
forRoot()
dalam modul malas. Apa kamu setuju? Lihat Modul Inti . Tautan ke # shared-module-for-root tidak ada lagi.import
adalah fungsionalitas JS (ES2015), bukan salah satu TypeScript. :)imports
, tetapi ekspor deklarabel Anda (komponen, direktif, pipa) denganexports
. Jadi, target utamaimports
danexports
hal yang berbeda. Sebaliknya, target utamaexports
Andadeclarations
. Anda mendeklarasikan komponen Anda dengandeclarations
, tetapi untuk komponen yang dimuat dinamis, Anda perlu memasukkannyaentryComponents
. Sementara itu,providers
dikelola dalam cerita lain oleh DI.imports
digunakan untuk mengimpor modul pendukung seperti FormsModule, RouterModule, CommonModule, atau modul fitur custom-made lainnya.declarations
digunakan untuk mendeklarasikan komponen, arahan, pipa yang termasuk dalam modul saat ini. Semua orang di dalam deklarasi saling kenal. Misalnya, jika kita memiliki komponen, katakanlah UsernameComponent, yang menampilkan daftar nama pengguna dan kami juga memiliki pipa, katakan toupperPipe, yang mengubah string menjadi string huruf besar. Sekarang Jika kita ingin menampilkan nama pengguna dalam huruf besar di UsernameComponent kita maka kita dapat menggunakan toupperPipe yang telah kita buat sebelumnya tetapi pertanyaannya adalah bagaimana UsernameComponent tahu bahwa toupperPipe ada dan bagaimana ia dapat mengakses dan menggunakannya. Di sini deklarasi datang, kita dapat mendeklarasikan UsernameComponent dan toupperPipe.Providers
digunakan untuk menyuntikkan layanan yang dibutuhkan oleh komponen, arahan, pipa dalam modul.sumber
Komponen dideklarasikan, Modul diimpor, dan Layanan disediakan. Contoh yang saya kerjakan:
sumber
@NgModule
Konstruksi sudut :import { x } from 'y';
: Ini adalah sintaks naskah skrip standar (ES2015/ES6
sintaks modul) untuk mengimpor kode dari file lain. Ini bukan spesifik Sudut . Juga ini secara teknis bukan bagian dari modul, hanya perlu untuk mendapatkan kode yang diperlukan dalam lingkup file ini.imports: [FormsModule]
: Anda mengimpor modul lain di sini. Misalnya kita mengimporFormsModule
dalam contoh di bawah ini. Sekarang kita bisa menggunakan fungsionalitas yang ditawarkan FormsModule di seluruh modul ini.declarations: [OnlineHeaderComponent, ReCaptcha2Directive]
: Anda meletakkan komponen, arahan, dan pipa Anda di sini. Setelah dideklarasikan di sini, Anda sekarang dapat menggunakannya di seluruh modul. Misalnya kita sekarang dapat menggunakanOnlineHeaderComponent
dalamAppComponent
pandangan (file html). Angular tahu di mana menemukan iniOnlineHeaderComponent
karena dinyatakan dalam@NgModule
.providers: [RegisterService]
: Di sini layanan kami dari modul khusus ini ditentukan. Anda dapat menggunakan layanan di komponen Anda dengan menyuntikkan dengan dependensi injeksi.Modul contoh:
sumber
Menambahkan lembar contekan cepat yang dapat membantu setelah istirahat lama dengan Angular:
PERNYATAAN
Contoh:
declarations: [AppComponent]
Apa yang bisa kita suntikkan di sini? Komponen, pipa, arahan
IMPOR
Contoh:
imports: [BrowserModule, AppRoutingModule]
Apa yang bisa kita suntikkan di sini? modul lainnya
PENYEDIA
Contoh:
providers: [UserService]
Apa yang bisa kita suntikkan di sini? jasa
BOOTSTRAP
Contoh:
bootstrap: [AppComponent]
Apa yang bisa kita suntikkan di sini? komponen utama yang akan dihasilkan oleh modul ini (simpul orangtua atas untuk pohon komponen)
KOMPONEN MASUK
Contoh:
entryComponents: [PopupComponent]
Apa yang bisa kita suntikkan di sini? komponen yang dihasilkan secara dinamis (misalnya dengan menggunakan ViewContainerRef.createComponent ())
EKSPOR
Contoh:
export: [TextDirective, PopupComponent, BrowserModule]
Apa yang bisa kita suntikkan di sini? komponen, arahan, modul atau pipa yang kami ingin memiliki akses ke mereka di modul lain (setelah mengimpor modul ini)
sumber
sumber