Das ist ein großes Thema, das hier behandelt werden muss, aber ich werde versuchen, es zu beantworten.
Die Idee ist, Komponenten zu rendern, ohne sie in einem Modul zu deklarieren.
Warum sollten wir so etwas tun wollen?
Es ist einfach - Module sind viel mehr als nur Komponenten. Module haben Zonen, Anbieter, Injektoren, DI und vieles mehr. Module für viele von uns repräsentieren Anwendungen. Und manchmal möchten wir einfach eine einfache Komponente erstellen und in einer anderen Komponente rendern.
Was ist das Problem, das es verursachen wird?
Module sind diejenigen, die Zonen für uns einrichten. Zonen sind diejenigen, die die Änderungserkennung automatisch auslösen. Wenn wir eine Komponente außerhalb eines Moduls rendern, haben wir keine automatische Änderungserkennung.
Mit Ivy haben wir also ein paar neue APIS, die uns helfen können:
ɵrenderComponent()
- Das kann eine Komponente rendern, ohne sie in einem Modul zu deklarieren.
ɵdetectChanges();
- Um die Änderungserkennung manuell auszulösen, ist dies jedoch nur eine Funktion von @angular/core
und Sie benötigen den DI nicht mehr, um den zu injizierenChangeDetectorRef
ɵmarkDirty()
- Um die Komponente zu markieren, die im nächsten Änderungserkennungszyklus überprüft werden soll.
ɵɵdirectiveInject()
- Injizieren Sie ein InjectionToken in eine Funktionssache, ohne den Konstruktor zu verwenden.
Wenn Sie fragen, was dieses ɵ
Zeichen ist, das all diesen neuen APIs vorangestellt ist, bedeutet dies, dass diese Funktionen noch experimentell sind und Sie sie noch nicht für die Produktion verwenden sollten. Und deshalb sind sie auch nicht dokumentiert.
Für Ihre Frage: Wenn Sie die Verwendung von CD in Ihren Komponenten minimieren möchten, rendern Sie sie einfach mit renderComponent
Funktion und bearbeiten Sie die CD selbst.
Wenn Sie mehr lesen möchten, habe ich einen vollständigen Blog-Beitrag genau zu diesem Thema geschrieben, einschließlich vieler Codebeispiele. Sie finden es hier - " Die Zukunft eigenständiger Komponenten in Post-Ivy-Veröffentlichungstagen "
Ich habe auch in NG-DE 2019 einen Vortrag darüber gehalten - " Bye Bye NgModules "