Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13482|Jawab: 0

[Sudut] Jebakan Angular 4.0: Menjelajahi Subrute dan Lazy Loading

[Salin tautan]
Diposting pada 13/06/2019 13.13.10 | | | |
Seiring dengan meningkatnya permintaan, fungsi proyek menjadi lebih kompleks. Saat ini, Anda perlu memodularisasi proyek dan mengemas komponen, instruksi, dan alur menjadi blok fungsional yang kohesif, yang tepat untuk menjelajahi subrute dan pemuatan lambat modul di Angular4.

Dalam pengembangan sebelumnya, fungsi perutean sederhana telah diimplementasikan dalam modul root, yang dapat diringkas dalam tiga langkah berikut:

1、在app.module.ts文件中加载路由库,并且在@NgModule中引入RouterModule.forRoot方法,其中,appRoutes是路由数组,它定义了具体的路由规则。


2. Tambahkan bilah navigasi ke komponen shell, di mana perintah routerLink menunjuk ke tujuan rute, dan routerLinkActive menambahkan gaya css ke label yang dipilih


3. Tambahkan perintah router-outlet ke templat komponen shell, dan tampilan akan ditampilkan di sana

Sekarang saya ingin mengimplementasikan subrute dan pemuatan modul lambat atas dasar ini.

RouterModule.forRoot() dan RouterModule.forChild()

Objek RouterModule menyediakan dua metode statis: forRoot() dan forChild() untuk mengonfigurasi informasi perutean.

Metode RouterModule.forRoot() digunakan untuk menentukan informasi perutean utama dalam modul utama, dan RouterModule.forChild() mirip dengan metode Router.forRoot(), tetapi hanya dapat diterapkan dalam modul fitur.

Artinya, forRoot() digunakan dalam modul root dan forChild() digunakan dalam submodul.

Putranya Lu Ru

Misalkan ada dua halaman di bawah halaman pengaturan /settings kami, /settings/profile dan /settings/password, yang masing-masing mewakili halaman profil dan halaman perubahan kata sandi. pengaturan sebagai blok fungsi terpisah, yang dapat dienkapsulasi ke dalam modul fitur. Ini memiliki rute independennya sendiri, dan rute untuk halaman profil dan kata sandi dapat diatur sebagai subrute.

Dalam modul SettingsModule kita menggunakan metode forChild(), karena SettingsModule bukanlah modul utama aplikasi kita.

Perbedaan utama lainnya adalah bahwa kita mengatur jalur utama modul SettingsModule ke jalur kosong (''). Karena jika kita mengatur jalur ke /settings, itu akan cocok dengan /settings/settings. Dengan menentukan jalur kosong, jalur tersebut cocok dengan jalur /settings.

Pemuatan malas: bebanAnak

Konfigurasikan informasi perutean modul pengaturan di modul root AppModule:

Properti LoadChildren yang memuat lambat digunakan di sini. Alih-alih mengimpor SettingsModule ke AppModule, properti loadChildren memberi tahu rute Angular untuk memuat modul SettingsModule sesuai dengan jalur yang dikonfigurasi oleh properti loadChildren. Ini adalah aplikasi khusus dari fungsi pemuatan lambat modul, ketika pengguna mengakses jalur /settings/**, modul SettingsModule yang sesuai akan dimuat, yang mengurangi ukuran sumber daya yang dimuat saat aplikasi dimulai.

loadChildren's property value terdiri dari tiga bagian:

Jalur relatif untuk mengimpor modul diperlukan

#分隔符

Mengekspor nama kelas modul

modul CommonModule

Saya menyebutkan bahwa saya ingin memperkenalkan modul CommonModule di modul fitur, tetapi saya tidak menyadari bahwa saya ingin memperkenalkannya di modul fitur pada awalnya, dan akibatnya, kesalahan halaman dilaporkan selama perutean:



core.es5.js:1020 ERROR Error: Uncaught (in promise): Error: Template parse errors:
Tidak dapat mengikat ke 'ngClass' karena itu bukan properti 'div' yang diketahui.

Tidak dapat mengikat ke 'ngForOf' karena itu bukan properti 'p' yang diketahui.

Pengikatan properti ngForOf tidak digunakan oleh arahan apa pun pada templat yang disematkan. Pastikan nama properti dieja dengan benar dan semua arahan tercantum dalam "@NgModule.declarations".

Tidak dapat mengikat ke 'ngIf' karena itu bukan properti 'div' yang diketahui.

......
Banyak kesalahan seperti ini terasa seperti arahan seperti 'ngClass', 'ngFor', dan 'ngIf' tidak didefinisikan.

Setelah memeriksa untuk waktu yang lama, saya menemukan bahwa itu karena saya tidak memperkenalkan CommonModule di modul fitur, dan setelah memperkenalkannya, kesalahan ini menghilang.

CommonModule menyediakan banyak instruksi yang umum digunakan dalam aplikasi, termasuk NgIf dan NgFor. Lebih tepatnya, direktif seperti NgIf dideklarasikan di CommonModule dari @angular/common.

Kami mengimpor modul BrowserModule di modul root AppModule, yang mengimpor CommonModule dan mengekspornya kembali. Hasil akhirnya adalah selama Anda mengimpor BrowserModule, Anda akan secara otomatis mendapatkan instruksi di CommonModule.

Mengimpor BrowserModule membuat semua komponen, direktif, dan alur yang diekspos oleh modul tersedia langsung di templat komponen apa pun di bawah AppModule tanpa langkah tambahan yang membosankan. Tetapi jangan mengimpor BrowserModule ke modul lain. Modul fitur dan modul pemuatan lambat harus diimpor ke CommonModule sebagai gantinya. Mereka tidak memerlukan inisialisasi ulang penyedia tingkat aplikasi penuh. Jika Anda mengimpor BrowserModule dalam modul pemuatan lambat, Angular akan melemparkan kesalahan.



Ini adalah beberapa masalah dan ringkasan yang saya temui dalam dua hari terakhir menggunakan subrute Angular dan pemuatan lambat.





Mantan:Analisis mendalam tentang Java Web Technology Insider Revisi PDF HD
Depan:Sepuluh Level Programmer Anda berada di level mana?
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com