ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ
ΠΠ΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ - ΡΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π±ΠΎΠ»ΡΡΠ°Ρ Π²Π΅ΡΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡΡ Π² Π½Π°ΡΠΈ Π΄Π½ΠΈ. ΠΡΠΎ Π½Π°Π±ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅, ΠΌΠ½ΠΎΠ³ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ ΠΈ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ HTML ΠΏΡΡΠΌΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
Π Π½Π°ΡΠΈ Π΄Π½ΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΏΠ°ΠΊΠ΅ΡΡ Angular elements, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Angular.
ΠΠ°ΠΊΠ΅Ρ @angular/elements
ΡΠΊΡΠΏΠΎΡΡΠΈΡΡΠ΅Ρ createCustomElement()
API, ΠΊΠΎΡΠΎΡΡΠΉ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΌΠΎΡΡ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Angular ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΊ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ DOM API.
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΡ ΡΡΠ°ΡΡΡ.
ΠΠ°ΠΊ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅ΠΌ AlertComponent
, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° Angular, Π² Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. Π‘Π½Π°ΡΠ°Π»Π° ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΠΈΠ»Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Angular. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΊΠ°ΠΆΠ΅ΠΌ Angular, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ:
ΠΡ ΠΎΡΠΈΡΠ°Π΅ΠΌ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π° bootstrap
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Ρ
ΡΠΊ ngDoBootstrap
Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Angular Π² Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ createCustomElement
, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· DI.
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ customElements.define()
API, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ ΠΈΠΌΡ ΡΠ΅Π³Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ HTML. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² Π½Π°ΡΠ΅ΠΌ index.html
ΡΠ°ΠΉΠ»Π΅:
ΠΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΠΉΡΠ΅ Π΅Π³ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ JS API, Ρ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΡ Π²ΡΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡ:
ΠΡΠΎ Π±ΡΠ» ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Ρ Angular. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Ρ, ΠΏΠΎΡΠ° ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π΅ΡΡ ΡΡΠΎΡ ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΡ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ, ΡΠΎΠ·Π΄Π°Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ createCustomElement
ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
ΠΠΎΡΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΊΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π΄ΠΎΠ³Π°Π΄Π°Π»ΠΈΡΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ:
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΊΠ»Π°ΡΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ NgElement
, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ HTMLElement
. Π ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ super()
, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ².
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π½Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅:
ΠΡΠΎ Π½Π°ΡΠ°Π»ΠΎ. Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΡΡΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²Π° ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ:
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΠΈΠΌ ΡΠΎΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
. connectedCallback
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π²ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² DOM, Π° disconnectedCallback
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΈΠ· DOM.
attributeChangedCallback
Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ, ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π±Π»ΡΠ΄Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ observedAttributes
.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠΎ Π² Π½Π°Ρ ΠΊΠΎΠ΄:
Π ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²ΠΈΠΌ Π΅Π³ΠΎ ΠΏΡΡΡΡΠΌ. ΠΠΎΠ·ΠΆΠ΅ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠΌ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π²Ρ ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Angular. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈ ΡΠΊΡΡΠ½ΡΡ ΡΠ°ΡΡΡ, ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ Π΄Π΅Π»Ρ.
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠ³Π»ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ ΠΊ ΡΠΎΠΉ ΡΠ°ΡΡΠΈ, Π³Π΄Π΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅Π³ΠΎ Π² DOM. ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π΅ΠΌ:
ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ, Π½Π°Π΄Π΅ΡΡΡ, Π²Ρ Π²ΡΠ΅ Π·Π½Π°Π΅ΡΠ΅ ΠΈ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Angular. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π½Π°ΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ - ΡΡΠΎ HTML-ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ.
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Ρ Π½Π°Ρ Π±ΡΠ» Π΄ΠΎΡΡΡΠΏ ΠΊ Π΅Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°ΠΌ.
ΠΠ°Π»Π΅Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ComponentFactoryResolver
ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. ΠΠ΅ΡΠΎΠ΄ resolveComponentFactory()
ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ComponentFactory. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ ComponentFactory
ΠΊΠ°ΠΊ ΠΎΠ± ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ComponentFactory
ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠΎΠ΄ create()
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ DOM, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΏΡΠΎΠ΅ΡΠΈΡΠΎΠ²Π°Π½Ρ (Ρ.Π΅. ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ng-content
), ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ HTML, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ detectChanges
ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ hostView
Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Angular ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠΈΠΊΠ»Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠ°.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² Π½Π°ΡΠ΅ΠΉ customElementPlease
ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ initializeComponent
, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΡΡΠ»ΠΊΡ Π½Π° this
, ΠΊΠΎΡΠΎΡΡΠΉ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ HTML-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ <my-alert>
Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠΎΠΌ.
ΠΡΠΈΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ°ΠΊ Π² connectedCallback
, ΡΠ°ΠΊ ΠΈ Π² attributeChangedCallback
, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
, ΡΡΠ½ΠΊΡΠΈΡ attributeChangedCallback
Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π΄ΠΎ connectedCallback
.
ΠΠ° ΡΡΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π° ΡΠΊΡΠ°Π½Π΅:
ΠΡ ΠΎΡΡΠ΅Π½Π΄Π΅ΡΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ, Π½ΠΎ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ Π½ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ. ΠΡ Ρ ΠΎΡΠΈΠΌ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ API Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΉΡΡΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°Ρ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ HTML, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΠ² Π΅Π³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅, Π»ΠΈΠ±ΠΎ Π²ΡΠ·Π²Π°Π² ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ setAttribute
:
ΠΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ Π·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Angular. ΠΠ°ΠΊ ΠΌΡ ΡΠ·Π½Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ ΠΌΠ°ΡΡΠΈΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΈΠΌΠ΅Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠ΅Π³ΠΎ Π½Π°Ρ Π°ΡΡΠΈΠ±ΡΡΠ°, ΠΈΠ· ΠΏΠΎΠ»Ρ observedAttributes
.
ΠΡΠ°ΠΊ, Π½Π°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ° - ΡΠΎΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Angular Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π° Π²Ρ ΠΎΠ΄ΠΎΠ². ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ:
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ getComponentFactory()
, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ°Π±ΡΠΈΠΊΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ΄Π½ΠΎ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡ ΡΠ°Π±ΡΠΈΠΊΠΈ, - ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ inputs
. Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΏΡΠΎΡΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ Π·Π° ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ templateName
. Π Angular ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π΄Π»Ρ Π²Π²ΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π²Π½ΡΡΡΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
Π Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ propName
ΠΈ templateName
ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ. Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ inputs
, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ
Π² ΡΠΎΡΠΌΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² HTML:
ΠΠ°ΠΏΡΡΡΠΈΠ² ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Ρ Π½Π°ΡΠΈΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΠ»ΡΡΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° - ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ observedAttributes
:
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ°ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Angular Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°ΡΡΠΈΠ±ΡΡΠΎΠ²:
ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ attributeChangedCallback
, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΠΎΠ²ΠΎΠ΅ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π²ΡΠ·Π²Π°ΡΡ detectChanges
. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ Π² Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ:
ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ - ΠΌΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ². ΠΠΎ ΠΌΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΈΠ· Π²ΠΈΠ΄Ρ Π²ΡΠΎΡΡΡ ΡΠ°ΡΡΡ Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠΊΠΈ; ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ»ΡΡΠ°ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅ ΡΠ°Π·Π½ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ.
Π ΡΡΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ²ΠΎΠΉΡΡΠ², Π½Π°ΠΌ ΠΏΡΠΎΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΡΠ΅ΡΡ ΠΈ Π³Π΅ΡΡΠ΅ΡΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ:
ΠΡΠΎ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠΌ ΡΠΎΠ±ΡΡΠΈΡ:
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠΉΡΠ΅ Π²ΡΡ ΠΎΠ΄Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ outputs
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ inputs
:
ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΈ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ· ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΈΡ
Ρ Observables, Π³Π΅Π½Π΅ΡΠΈΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° merge
Π΄Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈΡ
Π² ΠΎΠ΄Π½Ρ Π½Π°Π±Π»ΡΠ΄Π°Π΅ΠΌΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ΄ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π² Π½Π°ΡΠ΅ΠΌ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅:
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΡΡ
ΠΎΠ΄ΠΎΠ² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π²ΡΠ΄Π°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ dispatchEvent
Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π΅Π³ΠΎ Π²ΡΠ΅ΠΌ, ΠΊΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΅Π³ΠΎ ΡΠ»ΡΡΠ°ΡΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ²ΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ addEventListener
API:
ΠΠ°ΠΊ ΡΡΠΎ ΠΊΡΡΡΠΎ? π
ΠΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΠ΅ΡΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ
ΠΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, Π½Π΅ ΡΠ±Π΅Π΄ΠΈΠ²ΡΠΈΡΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ ΠΎΡ DOM, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ½ΠΈΡΡΠΎΠΆΠΈΡΡ Π΅Π³ΠΎ ΠΈ ΠΎΡΠΊΠ°Π·Π°ΡΡΡΡ ΠΎΡ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΠΈ Π½Π° Π²ΡΡ ΠΎΠ΄Ρ:
Π’ΠΎ, ΡΡΠΎ ΠΎΡΡΠ°Π»ΠΎΡΡ?
ΠΡ ΠΏΡΠΎΡΠ»ΠΈ Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡΡΡ; ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π²Ρ ΠΎΠ΄Ρ ΠΈ Π²ΡΡ ΠΎΠ΄Ρ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ API Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡ Π½Π΅ Π·Π°ΡΡΠΎΠ½ΡΠ»ΠΈ Π΄Π²Π΅ ΡΠ΅ΠΌΡ:
ΠΠ΅ΡΠ²ΡΠΉ - ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ngOnChanges
. ΠΠΊΡΠ°ΡΡΠ΅, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ngOnChanges(inputChanges)
, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ detectChanges()
.
ΠΡΠΎΡΠΎΠΉ - ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ng-content
. Π Π½Π°ΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅:
Π ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ ngContentSelectors
ΠΈΠ· ΡΠ°Π±ΡΠΈΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, ΠΈΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠ·Π»Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ, ΠΈ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ
Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΌ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΠΌ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΈΠΏΠ° Node[][]
.
Π ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΎΠ½ΡΡΠ° Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ»Π°Π½ΠΈΡΡΠ΅Ρ Π²ΡΠ·ΠΎΠ² detectChanges
, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π½Π΅ Π·Π°ΠΏΡΡΠΊΠ°Π»ΡΡ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° / ΡΠ²ΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ ΡΠΈΠΊΠ΅.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΈ ΠΌΠ°Π³ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Angular, ΠΌΡ ΡΠ²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡΠΎ Π½Π°ΡΡΠΎΡΡΠ°Ρ ΠΌΠ°Π³ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ β¨β¨β¨
π ΠΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π°ΠΊΠΈΡΡ?
ΠΠ΄Π½Π° ΠΈΠ· Π²Π΅Π΄ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Akita ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π² Π±Π΅ΡΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΠ΅Π΄Π°Ρ . ΠΠ½ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΡΠ΅ΡΡΡ.
ΠΡΠ΄Ρ ΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΡΡΡΠΏΠ°ΡΡΠΈΠ΅ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Ρ Akita Π΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΌΠΎΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΡΡΡΠ°Π½ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π² ΠΎΠ³ΡΠΎΠΌΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΌΠ°Ρ ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡ / Ρ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌ Π²Π°ΠΌ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ.
ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° ΠΌΠ΅Π½Ρ Π² Medium ΠΈΠ»ΠΈ Twitter, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± Angular, Akita ΠΈ JS!
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π·Π΄Π΅ΡΡ.