Saya mengerjakan Ionic
aplikasi ( 2.0.0-rc0
) yang tergantung pada angular 2
. Jadi pengantar baru ngModules
disertakan. Saya menambahkan di app.module.ts.
bawah saya .
import { NgModule } from '@angular/core';
import { IonicApp, IonicModule } from 'ionic-angular';
import { MyApp } from './app.component';
import { Users } from '../pages/users/users';
@NgModule({
declarations: [
MyApp,
Users
],
imports: [
IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
Users
]
})
export class AppModule {}
Apa yang entryComponents
dilakukan di sini? Components
sudah didefinisikan dalam declarations
. Jadi apa perlunya mengulanginya? Apa yang akan terjadi jika saya tidak memasukkan komponen di sini?
declared
di dalamnyangModule
tetapi tidak pernah digunakan. angular.io/docs/ts/latest/cookbook/… entrycomponents -Jawaban:
Ini untuk komponen yang ditambahkan secara dinamis yang ditambahkan menggunakan
ViewContainerRef.createComponent()
. Menambahkannya untukentryComponents
memberi tahu kompilator template offline untuk mengkompilasi dan membuat pabrik untuk mereka.Komponen yang terdaftar dalam konfigurasi rute ditambahkan secara otomatis ke
entryComponents
juga karenarouter-outlet
juga digunakanViewContainerRef.createComponent()
untuk menambahkan komponen yang dialihkan ke DOM.Compiler template offline (OTC) hanya membangun komponen yang benar-benar digunakan. Jika komponen tidak digunakan dalam template secara langsung, OTC tidak dapat mengetahui apakah mereka perlu dikompilasi. Dengan entryComponents Anda dapat memberitahu OTC untuk juga mengkompilasi komponen ini sehingga mereka tersedia saat runtime.
Apa itu komponen entri? (angular.io)
NgModule docs (angular.io)
Jika Anda tidak mencantumkan komponen yang ditambahkan secara dinamis ke
entryComponents
Anda akan mendapatkan pesan kesalahan tentang pabrik yang hilang karena Angular tidak akan membuatnya.Lihat juga https://angular.io/docs/ts/latest/cookbook/dynamic-component-loader.html
sumber
entryComponents
Anda dapat memberitahu OTC untuk juga mengkompilasi komponen ini sehingga mereka tersedia saat runtime.declarations
dalamnya juga harus terdaftarentryComponents
, kan?createComponent
dalam kode Anda atau misalnya router yang juga menggunakan thod API untuk menambahkan komponen.Anda tidak akan mendapatkan penjelasan yang lebih baik daripada dokumen Sudut: entri-komponen dan ngmodule-faq .
Dan di bawah ini adalah penjelasan dari dokumen sudut.
sumber
EntryComponent
apakah kita harus menghapusselector
atribut? (karena itu tidak akan digunakan)Jawaban lain menyebutkan ini tetapi ringkasan dasarnya adalah:
<my-component />
Komponen dialog material dibuat di dalam kode TS dan bukan template:
Ini mengharuskan Anda untuk mendaftarkannya sebagai komponen entri:
entryComponents: [MyExampleDialog]
Kalau tidak, Anda mendapatkan kesalahan:
ERROR Error: No component factory found for MyExampleDialog. Did you add it to @NgModule.entryComponents?
sumber
Entri entryComponents digunakan untuk mendefinisikan hanya komponen yang tidak ditemukan dalam html dan dibuat secara dinamis. Angular memerlukan petunjuk ini untuk menemukan komponen entri dan mengkompilasinya.
Ada dua jenis utama komponen entri:
Untuk informasi lebih rinci tentang komponen entri, silakan merujuk angular.io https://angular.io/guide/entry-components
sumber
Sedikit Latar Belakang tentang
entryComponent
entryComponent
adalah komponen apa pun Beban sudut sangat penting. Anda dapat mendeklarasikanentryComponent
dengan bootstrap diNgModule
atau dalam definisi rute.Dokumentasi mengatakan di bawah ini
Sekarang untuk menjawab pertanyaan spesifik Anda
entryComponents
Ada
entryComponents
array dalam@NgModule
file. Anda dapat menggunakan ini untuk menambahkanentryComponents
jika komponen menggunakan bootstrapViewContainerRef.createComponent()
.Itu adalah Anda membuat komponen secara dinamis dan bukan dengan bootstrap atau dalam templat.
sumber
Pada Angular 9
entryComponents
tidak lagi diperlukan berkat Ivy yang memungkinkan fitur ini menjadi usang dan karenanya dapat dihapus dari deklarasi modul.API dan fitur yang sudah usang -
entryComponents
danANALYZE_FOR_ENTRY_COMPONENTS
tidak lagi diperlukanIvy sudut
sumber