ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ dependency injection Π² angular
Dependency injectionΒΆ
ΠΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡΡΡΡ Injector-ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° DI Π² Angular. ΠΡΠΈΡΠ΅ΠΌ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ injector-ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠΎΠ³Π΄Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ, ΡΠΎ Π΅Π³ΠΎ ΠΏΠΎΠΈΡΠΊ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ injector-Π° ΠΈ Π΄Π°Π»Π΅Π΅ Π²Π²Π΅ΡΡ ΠΏΠΎ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ, ΡΠΎ Π΅ΡΡΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΡΠ»ΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ» Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΠΆΠ½ΠΈΡ ΡΡΠΎΠ²Π½Π΅ΠΉ, ΡΠΎ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠΉ ΠΏΠΎΠΈΡΠΊ Π½Π΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠΎΠΈΡΠΊ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ², ΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡΡ @SkipSelf() ΠΈ @Optional()ΒΆ
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΈΡΡ Π΄Π²Π° Π½ΡΠ°Π½ΡΠ°, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ Angular Dependency Injection. ΠΠ΅ΡΠ²Π°Ρ ΠΈΠ· Π½ΠΈΡ ΡΡΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΈΡΠΊΠ°, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠΎ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΈΠ· ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΊ Π΄Π²ΡΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ: Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌΡ?
Angular ProvidersΒΆ
Π‘Π°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠ²ΠΎΠΉΡΡΠ²Π° Angular providers ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ injection token.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ:
Π deps ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ Π²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ factory provider.
ΠΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ provide Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π±ΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π° injection token.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΡΠ½ΠΎΡΡΡ, Π½Π΅ ΡΠ²Π»ΡΡΡΡΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠΌ Angular, Π½ΡΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄Π»Ρ Π½Π΅Π΅ Π²ΡΡΡΠ½ΡΡ injection token.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ DI Π² Angular ΠΏΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΡ β ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΠ°ΡΡΠ½ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ²
Π Angular ΠΎΡΠ΅Π½Ρ ΠΌΠΎΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Dependency Injection. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠΎ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π»ΡΠ±ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ Π² Π½ΡΠΆΠ½ΡΡ ΡΠ°ΡΡΡΡ .
ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ Π³ΠΈΠ±ΠΊΠΎΠΉ: ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ , ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π°, Π»Π΅Π³ΠΊΠΎΡΡΡ ΠΏΡΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ DI Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΊΡΠΎΠΌΠ½ΠΎ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ° ΠΊΠ°ΠΊΠΈΡ -ΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ Ρ ΠΎΡΠ΅Π» Π±Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ ΠΈΠ· DI Π΄Π°Π½Π½ΡΠΌΠΈ. Π¦Π΅Π»Ρ: ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ.
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ DI Π² Angular
Π― Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎ ΠΏΡΠΎΠ²ΠΎΠΆΡ ΡΠ΅Π²ΡΡ Angular-ΠΊΠΎΠ΄Π° Π½Π° ΡΠ°Π±ΠΎΡΠ΅ ΠΈ Π² ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ΅. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ DI ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ:
Angular ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΊΠ΅Π½ DOCUMENT, ΡΡΠΎΠ±Ρ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: Π²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π΅ΡΡΡ ΠΏΡΠΈ SSR.
ΠΡΠ»ΠΈ Π²Π°ΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ Π½ΡΠΆΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° WINDOW, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΡΠΎΠΊΠ΅Π½:
ΠΠΎΠ³Π΄Π° ΠΊΡΠΎ-ΡΠΎ Π·Π°ΠΏΡΠΎΡΠΈΡ ΡΠΎΠΊΠ΅Π½ WINDOW Π² ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π· ΠΈΠ· Π΄Π΅ΡΠ΅Π²Π° DI, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ ΡΠ°Π±ΡΠΈΠΊΠ° ΡΠΎΠΊΠ΅Π½Π° β ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡ DOCUMENT Ρ Angular ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡ ΠΈΠ· Π½Π΅Π³ΠΎ ΡΡΡΠ»ΠΊΡ Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ window.
ΠΠ°Π»Π΅Π΅ Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΠ½ΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ ΡΠ°ΠΊΠΈΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡΠΌ β ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² providers ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
Π§Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ
Π Π½Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΌΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ DI ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Angular ΠΈ ΡΡΠ°Π»ΠΈ Π·Π°ΠΌΠ΅ΡΠ°ΡΡ, ΡΡΠΎ Π·Π°ΡΠ°ΡΡΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΡΡ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ ΠΈΠ· DI Π΄Π°Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΠΎΠ΄Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , Π° ΠΌΡ Π²Π½Π΅Π΄ΡΡΠ΅ΠΌ Π² Π½Π΅Π³ΠΎ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π½Π΅Π³ΠΎ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠ°Π·Ρ Π½Π° ΡΠΎΠ»ΠΈΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΡΠΈΠ½ ΠΠΎΠ³Π»Π°Ρ Π² ΡΠ²ΠΎΠ΅ΠΌ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ The Architecture of Components Π½Π° Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠ΅ΠΆΠ΄ΡΠ½Π°ΡΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ Angular Connect ΠΏΠΎΠΊΠ°Π·Π°Π»Π° ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΈ ΡΠΌΠΎΡΡΠ΅ΡΡ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΠΏΠΈΡΡ ΠΊΠ΅ΠΉΡ Π·Π΄Π΅ΡΡ.
ΠΠ·ΡΡΡ ΠΈΠ· query-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² id ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ΡΠ²ΠΈΡΠ°, Π° Π² ΠΎΡΠ²Π΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠΈΠΌ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎΠ± ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΡΠ²Π΅ΡΡΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π° Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΈΡ .
ΠΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ
ΠΠ½ΠΎΠ³Π΄Π° Ρ Π²ΡΡΡΠ΅ΡΠ°Ρ Π²ΠΎΡ ΡΠ°ΠΊΠΎΠΉ ΡΡΠΈΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ . ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, Π½Π΅ Π΄Π΅Π»Π°ΠΉΡΠ΅ ΡΠ°ΠΊ:
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅:
ΠΡΠΎΡ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΡΡΠ΄ ΠΏΡΠΎΠ±Π»Π΅ΠΌ:
Π Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΡΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄Π΅ΠΎ, ΡΡΠΎ Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄ΡΠ²Π°Π» Π²ΡΡΠ΅, ΡΠ΄Π΅Π»Π°Π½ΠΎ Ρ ΠΎΡΠΎΡΠΎ. Π‘ Π΅Π΅ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ:
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅:
ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈ Π»ΠΈΡΠ΅Π½ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΎΠ² ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°: ΡΠΌΠΎΡΡΠΈΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ, Π² Π½Π΅ΠΌ Π½Π΅Ρ Π»ΠΈΡΠ½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ. ΠΡΠ»ΠΈ ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΡΡΡΠΈΠΌΠΎΠΌ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ β ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΡΡΠΈΠΌΠ° Π½Π°ΠΌ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠΎΠΊ Π΄Π°Π½Π½ΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌ: Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΈΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠΎΠ³Π΄Π° ΠΎΠ½ Π²ΡΠ΄Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Π΅.
Π‘Π΄Π΅Π»Π°Π΅ΠΌ Π΅ΡΠ΅ ΠΊΡΡΡΠ΅: ΡΠ°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΈΡΠΌΠΎΡΡΠΈΠΌΡΡ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅ ΠΊ ΠΏΡΠΎΡΠ»ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΡΡΠ΅ΡΠ° ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡ OrganizationService. ΠΠ½ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ organization$. ΠΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠ½ΠΎΡΡΠΈ Π² Π½Π°ΡΠ΅ΠΌ Π΄Π΅ΡΠ΅Π²Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅.
ΠΠΎ ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ? ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Provider ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΌΡ Π²ΡΠ½ΠΎΡΠΈΠΌ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΡΡΠ΄ΠΎΠΌ Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ, ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²:
Π ΡΠ°ΠΉΠ»Π΅ organization.providers.ts Π±ΡΠ΄ΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Provider Π΄Π»Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΎΠΊΠ΅Π½ Π΄Π»Ρ ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅:
ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ ΠΌΠ°ΡΡΠΈΠ² ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½Π° ORGANIZATION_INFO ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΈΠ· ΡΠ°Π±ΡΠΈΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ DI β deps ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π·ΡΡΡ ΠΈΠ· Π΄Π΅ΡΠ΅Π²Π° DI Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π² ΡΠ°Π±ΡΠΈΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½Π°. Π Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π»ΡΠ±ΡΡ ΡΡΡΠ½ΠΎΡΡΡ ΠΈΠ· DI, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ DI-Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠ±ΡΡΠ²ΠΈΠΌ providers Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅:
Π ΠΌΡ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅:
ΠΠ»Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΡΠΊΠ΅ Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ .
Π¨Π°Π±Π»ΠΎΠ½ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ:
Π§ΡΠΎ Π½Π°ΠΌ Π΄Π°Π΅Ρ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄?
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΠΈΠ·Π±Π°Π²ΠΈΡ Π²Π°Ρ ΠΎΡ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ Π½Π° Π»ΡΠ±ΡΡ ΠΌΠ΅Π»ΠΎΡΡ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΡΠΎΠΈΡ: ΠΈΠ½ΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, Π΅ΡΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Pipe.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΠ°ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ Π΄Π°Π΄ΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΏΡΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎΠΌ ΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³Π΅ Π±ΠΎΠ»ΡΡΠΈΡ ΠΊΡΡΠΊΠΎΠ² Π»ΠΎΠ³ΠΈΠΊΠΈ.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Angular DI, ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Angular β ΡΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. ΠΠ°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠ΅ΠΉΡΠ° ΠΏΡΠΎΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Angular DI, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π§ΡΠΎ Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ inject?
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Injects a token from the currently active injector. Must be used in the context of a factory function such as one defined for an InjectionToken. Throws an error if not called from such a context.
Π Π΄Π°Π»ΡΡΠ΅ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ inject Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ tree shakable ΡΠΎΠΊΠ΅Π½ΠΎΠΌ:
ΠΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ Π½Π°ΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Π ΡΠ°Π±ΡΠΈΠΊΠ°Ρ tree shakable ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ².
Π ΡΠ°Π±ΡΠΈΠΊΠ°Ρ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ².
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π±ΡΠΈΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ InjectionToken Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ, inject β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ°. ΠΠΎ Π·Π°ΡΠ΅ΠΌ Π½Π°ΠΌ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ , Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΡΠΌΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°?
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ.
Π ΡΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ inject
ΠΡΠ»ΠΈ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΡΠΎ ΡΠ°Π±ΠΎΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ inject ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΉ:
Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ setCurrentInjector ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π² ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ _currentInjector ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ;
ΡΡΠ½ΠΊΡΠΈΡ inject Π΄ΠΎΡΡΠ°Π΅Ρ ΠΈΠ· _currentInjector Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠΎΠΊΠ΅Π½Ρ.
ΠΡΠΎ Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠΎ, ΡΡΠΎ ΠΌΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ inject Π΄Π°ΠΆΠ΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ :
ΠΡΠ°Π²Π΄Π°, Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΡΠΎ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ΡΠ·Π°Π±Π΅Π»ΡΠ½ΠΎ. ΠΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Angular ΡΠΎΠΆΠ΅ Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡ Π² Π»ΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΠΎΠ²Π΅ΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π²Π΅ΡΠ°ΠΌΠΈ.
Injection flags
InjectFlags β ΡΡΠΎ Π°Π½Π°Π»ΠΎΠ³ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Optional, Self, SkipSelf ΠΈ Host. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΡΡ inject ΠΈ Injector.get. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈ Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ΄Π²Π΅Π»Π° β Π΅Π΅ ΠΏΠΎΡΡΠΈ Π½Π΅Ρ:
Π§Π΅Π»ΠΎΠ²Π΅ΠΊ Π·Π½Π°ΡΡΠΈΠΉ ΡΡΠ°Π·Ρ ΡΠ²ΠΈΠ΄ΠΈΡ Π·Π΄Π΅ΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΌΠ°ΡΠΊΠΈ. ΠΡΠΎΡ ΠΆΠ΅ enum ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ Π²ΠΈΠ΄Π΅:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ»Π°Π³Π°
ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΡΠΎΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ ΡΠΎΡΡΠ΅ΡΠ°, Π½Π΅ Π±Π΅ΡΠΏΠΎΠΊΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΎΡΡΠΈΠ½Π³Π° Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½:
ΠΡΠ³Π»ΡΠ΄ΠΈΡ ΠΏΡΠΎΡΡΠΎ. Π Π½Π° Π΄Π΅Π»Π΅ β Π΅ΡΠ΅ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, Π±Π΅Π· Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΡ ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ ΠΈ Π»ΠΈΡΠ½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΠΉ.
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠ»Π°Π³ΠΎΠ²
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΠ»Π°Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. Π ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΡΡΡΡΡ ΠΎΠ½ΠΈ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΠΠ:
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ Π±ΠΈΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ Π:
Tree shakable ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ *SansProviders
Tree shakable ΡΠ΅ΡΠ²ΠΈΡΡ β ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ±ΠΎΡΠΊΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΠΌΠΎΠ΄ΡΠ»Π΅, ΡΠΊΠΎΡΠ΅Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ β ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅:
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π² ΠΏΡΠΎΠΏΠ΅ΡΡΠΈ providedIn ΡΠΊΠ°Π·Π°Π½ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ, ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±ΡΠΈΠΊΠΈ Π² tree shakable ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
ΠΠ»ΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠ°:
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ°ΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°.
Π‘ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ. Π― ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½Π΅ΡΠ½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΠ΅ ΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ.
ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ use-ΠΊΠ΅ΠΉΡΡ Π²Π°ΠΌ ΡΠ°ΠΌΠΈΠΌ. ΠΡΠ΄Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΠΈΠΌΠΈ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ .
ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ:
Input binding with a setter, ngOnChanges.
Child events (outputs).
ΠΠΎ Π½ΠΈ ΡΠ»ΠΎΠ²Π° Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°/ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΡΠ°Π½Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· DI.
UPD: Π½Π°ΡΠ»Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΊΠΈ ΡΡΡΠ»ΠΎΡΠΊΠ° Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, Π³Π΄Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±.
ΠΠ° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΡΠ°Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΡΠΏΡΠΎΡΠ°Ρ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ ΠΊΠ»ΠΈΠΊ ΠΏΠΎ Ρ ΠΎΡΡΠΎΠ²ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΏΠΎΡΠΎΠ±Π° Π±ΡΠ»ΠΎ Π±Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠΌ.
ΠΠΎ ΠΏΠΎΡΠ΅ΠΌΡ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ? ΠΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ, ΠΈ ΠΎΠ½ ΡΠ²Π½ΠΎ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ. ΠΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡΠ΄Ρ Ρ Π½Π°ΠΏΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. Π ΠΏΠΎΠΊΠ° ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ± ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠΎΠ² ΠΈ ElementInjector (ΠΈΠΌΠ΅Π½Π½ΠΎ Π² ΡΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅).
ΠΠΌΠ΅ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ°ΠΊ Ρ ΡΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ», Angular β ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. Π Ρ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ Π² Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ.
Π‘Π²ΠΎΠΈΠΌΠΈ Π½Π°Ρ ΠΎΠ΄ΠΊΠ°ΠΌΠΈ Ρ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅Π»ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ Π’Π²ΠΈΡΡΠ΅ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎΠ²Π΅ΡΡ ΠΏΠΎ Angular Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΏΠΎ Ρ ΡΡΡΠ΅Π³Ρ #AngularTip. Π ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ°ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΡΠ²ΠΈΡΠΎΠ² β ΠΏΠΎ Ρ ΡΡΡΠ΅Π³Ρ #AngularTipRus! ΠΡΠ΄Ρ ΡΠ°Π΄, Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠΎΠ²Π΅ΡΠ°ΠΌΠΈ ΡΠΎ ΠΌΠ½ΠΎΠΉ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ. Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅!
Π‘ΠΏΠΈΡΠΎΠΊ Ρ ΠΎΡΠΎΡΠΈΡ ΡΡΠ°ΡΠ΅ΠΉ ΠΎΠ± Angular DI
Π― Π²ΡΠΏΠΎΠΌΠ½ΠΈΠ» Π΅ΡΠ΅ 2 ΡΡΠ°ΡΡΠΈ ΠΎΠ± Angular DI ΠΎΡ @MarsiBarsi Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠΈΡΠΈΡΠ΅ Π³Π΄Π΅ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΠΉΡΠ΅ ΠΈ Π΄Π°Π²Π°ΠΉΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎΠΏΠΎΠ»Π½ΡΡΡ!
Angular 6+ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. providedIn vs providers:[]
Π Angular 6 ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π½ΠΎΠ²ΡΠΉ ΡΠ»ΡΡΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (provideIn). ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΠΆΠ΅ Π²ΡΡΠ΅Π» Angular 7, ΡΡΠ° ΡΠ΅ΠΌΠ° Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ ΠΎΡΡΠ°Π΅ΡΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΡΠ°Π½ΠΈΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ
GitHub, Slack ΠΈ Stack Overflow, ΡΠ°ΠΊ ΡΡΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΡ ΡΠ΅ΠΌΡ.
Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ:
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (dependency Injection)
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (DI) β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². Π‘ΠΈΡΡΠ΅ΠΌΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°.
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΈ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ constructor, ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΠΎΠΏΡΡΡΠΈΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½Π°ΡΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΅Π³ΠΎ, Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ HttpClient Π²ΡΡΡΠ½ΡΡ. Π’ΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎ ΠΎΡΠΊΡΠ΄Π° Π² ΡΠ°ΠΊΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²Π·ΡΡΡ httpClient? ΠΠ³ΠΎ ΡΠΎΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ:
ΠΠΎ ΠΎΡΠΊΡΠ΄Π° ΡΠ΅ΠΏΠ΅ΡΡ Π²Π·ΡΡΡ httpHandler? Π ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΡΠ½ΠΎΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Angular Π΄Π΅Π»Π°Π΅Ρ Π²ΡΠ΅ ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΈ ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΡΡΠΈΠ»ΠΈΠΉ Ρ Π½Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ.
Π‘ΡΠ°ΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular (providers: [])
ΠΠ»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Angular Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π²Π½Π΅Π΄ΡΠΈΡΡ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΠΎ ΡΠ΅Π»ΠΈΠ·Π° Angular 6 Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π² ΡΠ²ΠΎΠΉΡΡΠ²Π΅ providers: [] Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΎΠ² @NgModule, @Π‘omponent ΠΈ @Directive.
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ»ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ providers: []:
ΠΠΎΠ΄ΡΠ»ΠΈ, Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠ΅ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ (Eager)
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ²ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΡΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΡΠΈΠ½Π³Π»ΡΠΎΠ½. ΠΠ½ Π±ΡΠ΄Π΅Ρ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² providers[] Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. Π‘ΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠΎΡΠ½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ΄ΡΠ»ΠΈ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ (Lazy)
ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ lazy ΠΌΠΎΠ΄ΡΠ»Ρ, Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ eager ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅: No provider for MyService! error.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² @Π‘omponent ΠΈ @Directive
ΠΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ»ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΈ Π²ΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ . Π ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΈΠ½Π³Π»ΡΠΎΠ½ΠΎΠΌ, Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΡΠ΄Π°Π»ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈΠ· DOM.
ΠΠΎΠ²ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular (providedIn: ‘root’ | SomeModule)
Π Angular 6 ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ βTree-shakable providersβ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° providedIn Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° @Injectable.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ providedIn ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ: ΡΠ°Π½ΡΡΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Π΅ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½, ΡΠ΅ΠΏΠ΅ΡΡ Π² ΡΠ΅ΡΠ²ΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ.
Π‘Π΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΠΊΠΎΡΠ΅Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ(providedIn: ‘root’) ΠΈΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (providedIn: SomeModule). providedIn: ‘root’ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π² AppModule.
Π Π°Π·Π±Π΅ΡΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°:
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (providedIn: ‘root’)
ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Π±Π°Π½Π΄Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Ρ.Π΅. Π²Π½Π΅Π΄ΡΠ΅Π½ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ.
ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·Π½ΠΈΡΡ Π² ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠΌ SPA ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ providedIn: ‘root’ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Π Π°Π½ΡΡΠ΅ Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² providers:[] Π΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠΎΡΠ»Π΅ ΠΈΠΌΠΏΠΎΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Π°Π½Π΄Π» Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½. Π ΡΠ»ΡΡΠ°Π΅ Ρ providedIn: ‘root’ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ.
ΠΠΎΠ΄ΡΠ»Ρ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ (lazy) ΠΈ providedIn: βrootβ
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ, Π΅ΡΠ»ΠΈ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ Ρ providedIn: ‘root’ Π² lazy ΠΌΠΎΠ΄ΡΠ»Ρ?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ‘root’ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ AppModule, Π½ΠΎ Angular Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΌΠ΅Π½, ΡΡΠΎΠ± Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π² Π±Π°Π½Π΄Π» lazy ΠΌΠΎΠ΄ΡΠ»Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π²Π½Π΅Π΄ΡΠ΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π² Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΡ. ΠΠΎ Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° (Ρ ΠΎΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ΄ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π°ΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΡΠ°). ΠΡΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π² lazy ΠΌΠΎΠ΄ΡΠ»Π΅, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±Π°Π½Π΄Π». Π Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ! ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²ΠΈΡΠ° Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΠΊΡΡΡΡΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΡΡΠ°ΡΡ.
Π ΡΡΠ°ΡΡΡΡ Π΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΡΠΎ, ΠΈ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈΡ Π½ΠΈΠΆΠ΅.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (eager)
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΡΠΎΡ ΠΊΠ΅ΠΉΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π° ΠΈ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ providedIn: ‘root’. ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² EagerModule ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½ΠΎ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π΅Ρ.
ΠΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΏΡΠΎΡΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠ°ΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ providers:[], ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ.
ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠ°ΡΠ°ΠΉΡΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ providedIn: ‘root’ Π²ΠΎ Π²ΡΠ΅Ρ eager ΠΌΠΎΠ΄ΡΠ»ΡΡ .
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ(lazy)
ΠΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΡ Angular ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ, ΡΡΠΎ Π΄Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΡΡΠΈ lazy ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΡΠΈΠ±ΠΊΠ°, Π΄ΠΎΠΏΡΡΠ΅Π½Π½Π°Ρ Π² Π½Π΅ΠΌ, Π½Π΅ ΠΏΠΎΠ²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ°ΡΡ ΡΠΏΠΎΠΊΠΎΠΉΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π² Π΄Π΅Π½Ρ ΡΠ΅Π»ΠΈΠ·Π°.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄ΡΠ»Ρ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ(providedIn: LazyModule)
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π½Π΅ Π΄Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π² ΠΎΡΡΠ°Π»ΡΠ½ΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΡΡΠΊΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΡΡΠΎ ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅.
ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΊΡ: ΠΡΠ»ΠΈ lazy ΡΠ΅ΡΠ²ΠΈΡ Π²Π½Π΅Π΄ΡΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎ ΡΠ±ΠΎΡΠΊΠ° (Π΄Π°ΠΆΠ΅ AOT) ΠΏΡΠΎΠΉΠ΄Π΅Ρ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ, Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΏΠ°Π΄Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Β«No provider for LazyServiceΒ».
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ
ΠΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
Π Π΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΎΠ·Π΄Π°Π² ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»Ρ LazyServiceModule, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ Π² LazyModule. Π ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΈΠ»ΠΈΠΉ ΠΈ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΠ»ΡΡΡ:
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ (providedIn: SomeComponent)
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π½Π΅Π΄ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ Π² @Π‘omponent ΠΈΠ»ΠΈ @Directive Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°?
ΠΠ° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π΅Ρ!
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ providers: [] Π² Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ°Ρ @Π‘omponent ΠΈΠ»ΠΈ @Directive.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ
providedIn: ‘root’ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΈ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ngx-model, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ»Π° ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°Π½Π° Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ @angular-extensions/model. Π Π½ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ NgxModelModule Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π½Π΅Π΄ΡΠΈΡΡ ModelFactory Π² Π½ΡΠΆΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ.
ΠΠΎΠ΄ΡΠ»ΠΈ Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ(lazy)
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ providedIn: LazyServicesModule ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ Π² LazyModule. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ Π½Π΅ Π΄Π°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΈΡ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ. ΠΡΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΎΠΏΡΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ (Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ providedIn: ‘root’) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΡΠ°Π½ΠΈΡΠ΅ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ Π»ΡΡΡΠΈΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ!
providedIn: ‘root’ ΡΠΎΠΆΠ΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ providedIn: LazyServideModule ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ Β«missing providerΒ» ΠΏΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π² Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΠ΅ΡΠ²ΠΈΡ Π² Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ ΠΌΠ΅ΡΡΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΠ²ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ Π² SomeModule.forRoot(someConfig).
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ providedIn: ‘root’. ΠΡΠΎ Π΄Π°ΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅ΡΠ²ΠΈΡ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2
ΠΠΎΠ±ΡΡΠΉ Π²Π΅ΡΠ΅Ρ, ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ Π΄Π°ΠΌΡ ΠΈ Π³ΠΎΡΠΏΠΎΠ΄Π°!
ΠΡΠΈ Π²ΡΠ΅ΠΉ Π½Π΅ΠΎΡΠ»Π°Π±Π΅Π²Π°ΡΡΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° AngularJS ΠΌΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½Π΅ ΡΡΠΏΠ΅Π»ΠΈ ΠΎΡΠΌΠ΅ΡΠΈΡΡΡΡ Ρ ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΏΠΎ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Π° ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ΅ΡΠΈΠ»ΠΈ Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡΡ Π²ΡΠΎΡΠΎΠΉ ΠΈ ΠΏΠΎΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡΡΡ: Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΠΌ ΠΈΠΌΠΏΠΎΠ½ΠΈΡΡΠ΅Ρ Π²ΠΎΡ ΡΡΠ° ΡΠ°Π±ΠΎΡΠ°, ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡΠ°Ρ ΠΊΡΠΎΠΌΠ΅ AngularJS ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ JavaScript-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ?
ΠΠΎΠ΄ ΠΊΠ°ΡΠΎΠΌ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ°ΡΡΠΈ ΠΠ°ΡΠΊΠ°Π»Ρ ΠΡΠ΅Ρ ΡΠ° (Π²Π΅ΡΡΠΈΡ ΠΎΡ 12 ΠΎΠΊΡΡΠ±ΡΡ 2015 Π³ΠΎΠ΄Π°), ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΎ ΡΠ°ΠΊΠΈΡ Π²ΡΡΠΎΠΊΠΈΡ ΠΌΠ°ΡΠ΅ΡΠΈΡΡ , ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² AngularJs ΠΈ, ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΠ΅Ρ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΆΠ΄ΡΡ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π² Angular 2.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ»ΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ ΠΈ ΠΊΠΎΠ·ΡΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Angular. ΠΡΠ°ΠΊ, ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π½Π΅Π΄ΡΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠΎΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ; ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°ΡΡΡΡ, Π»ΠΈΠ±ΠΎ Π² ΠΊΠ°ΠΊΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ ΠΎΠ½ΠΈ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π½ΡΠΆΠ΄Π°ΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (Π² Angular 1) ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ ΡΠ΅ΡΠΈΡΡ Π² Angular 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΡ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ β Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠΉ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠΈΡΡ ΠΊ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΠΆΠ΅ ΡΠ°ΠΊΠΎΠ΅ Β«Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ» (DI) ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ DI Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ Π² Angular 1.
ΠΠΎΠΉΡΠ° ΠΠΆΠΈΠ½Π° ΡΠ΄Π΅Π»Π°Π» ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π΄ΠΎΠΊΠ»Π°Π΄ ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ΅Π½ΡΠΈΠΈ ng-conf 2014. Π ΡΠ²ΠΎΠ΅ΠΌ Π²ΡΡΡΡΠΏΠ»Π΅Π½ΠΈΠΈ ΠΎΠ½ ΠΈΠ·Π»ΠΎΠΆΠΈΠ» ΠΈΡΡΠΎΡΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π΄Π»Ρ Angular 2, ΠΎΠΏΠΈΡΠ°Π» ΠΈΠ΄Π΅ΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° Π±Π°Π·ΠΈΡΡΠ΅ΡΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π», ΡΡΠΎ DI ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π² Π΄Π²ΡΡ ΠΈΠΏΠΎΡΡΠ°ΡΡΡ : ΠΊΠ°ΠΊ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΡΡΠ½ΡΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ DI, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΡΡ ΡΡΠ°ΡΡΡ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ Π²ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΈ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ.
ΠΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠΌΠ΅Π΅ΠΌ ΠΊΠ»Π°ΡΡ Car
Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°Π΄Π°Π΅ΠΌ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° car (Β«Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΒ»), ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. Π ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ? ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ, Π½ΠΎ ΠΈ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈΡ
ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ΅ΠΊΡ engine (Β«Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»ΡΒ») ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Engine
, Tires
(ΡΠΈΠ½Ρ) ΠΏΠΎ-Π²ΠΈΠ΄ΠΈΠΌΠΎΠΌΡ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ-ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ, Π° doors
(Π΄Π²Π΅ΡΡΡ) Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠΉ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π»ΠΎΠΊΠ°ΡΠΎΡΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈ Π΅ΡΠ΅ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ. Π’ΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡΠ΅ ΡΠ΅Π±Π΅, ΡΡΠΎ Ρ
ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΊΠ»Π°ΡΡ. ΠΠ°ΠΊ Π²Ρ Π·Π°ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π±Ρ Π² ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ Engine
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ MockEngine
? ΠΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅ΡΡΠΎΠ² ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π½Π°Ρ ΠΊΠΎΠ΄, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ΅Π½Π°ΡΠΈΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄, ΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ΄ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π§ΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ Π½Π°Ρ ΠΊ ΡΠ΅Π·ΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ = ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΠΊΠΎΠ΄ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΡΡΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ? ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΠΎ, ΠΈ Π²Ρ ΡΠΆΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΠΎ ΡΠ΅ΠΌ ΡΠ΅ΡΡ. ΠΠ΅Π½ΡΠ΅ΠΌ ΠΊΠΎΠ΄ ΡΠ°ΠΊ:
ΠΡ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ½Π΅ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈ ΡΠ°ΡΡΠΈΡΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° β ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½Π° ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½Π° Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π ΠΊΠΎΠ΄Π΅ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ, ΠΌΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ»ΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΠ΅ΠΉΡΠ°Ρ Ρ ΠΎΡΠ΅Π»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ car, ΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ»ΠΈ Π±Ρ Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ:
ΠΡΡΡΠΎ? Π’Π΅ΠΏΠ΅ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½Ρ ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΌΠΎΠΊ-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ΅ΡΡΠΎΠ²:
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΠ΅, ΡΡΠΎ ΠΈ Π΅ΡΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π’ΠΎΡΠ½Π΅Π΅, ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ Π΅ΡΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ «Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°«. ΠΡΡΡ Π΅ΡΠ΅ Π΄Π²Π° ΠΏΠ°ΡΡΠ΅ΡΠ½Π°: Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° (setter injection) ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (interface injection), Π½ΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
ΠΡΠ»ΠΈΡΠ½ΠΎ, Π²ΠΎΡ ΠΌΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ DI, Π½ΠΎ Π³Π΄Π΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° DI? ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΌΡ Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎ ΡΠ΄Π²ΠΈΠ½ΡΠ»ΠΈ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π·Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π½Π° ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅. ΠΠΌΠ΅Π½Π½ΠΎ Π² ΡΡΠΎΠΌ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π°ΡΠ° Π½ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°. ΠΡΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΠ΅Ρ ΡΠ±ΠΎΡΠΊΡ Π²ΡΠ΅Ρ ΡΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π½Π°Ρ? ΠΡ ΡΠ°ΠΌΠΈ.
Π‘Π΅ΠΉΡΠ°Ρ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ main. ΠΠ΅Π»Π°ΡΡ ΡΡΠΎ Π²ΡΡΡΠ½ΡΡ Π²Π΅ΡΡΠΌΠ° ΠΎΠ±ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠΎΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π»ΡΡΡΠ΅ ΠΏΠΎΡΡΡΠΏΠΈΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊ?
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ°ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ
ΠΠ΄Π΅ΡΡ ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΊΠ°ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. ΠΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, Π² Angular 1 ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° DI, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ; ΡΠ°ΠΊΠΆΠ΅ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΠΊΠ»Π°ΡΡ Car
Π² Angular 1:
ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅ΠΌ Π½Π°Ρ Car
ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²ΠΈΡ ΠΈ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Ρ Π΅Π³ΠΎ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡ Π½Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ-ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΡ, ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π½Π΅ Π·Π°ΠΌΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΡ ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Β«Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΒ».
ΠΡΠ΅ ΠΊΠ»Π°ΡΡΠ½ΠΎ, Π½ΠΎ Π²ΡΡΡΠ½ΡΠ΅ΡΡΡ, ΡΡΠΎ Ρ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° DI Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ:
ΠΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅ΡΠΈΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular Π½Π° Π½ΠΎΠ²ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ, Π»Π΅ΠΆΠ°ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π΅ DI Π² Angular 2. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ DI.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2 ΠΏΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²:
ΠΡΠ°ΠΊ, ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π½Π°ΡΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Car
ΠΈ Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ. ΠΠΎΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Car
:
ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ· Angular 2 Injector
, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ API Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠΎΠ². ΠΠ΅ΡΠΎΠ΄ resolveAndCreate()
β ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, ΡΠ°Π±ΡΠΈΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΡΠΎΠ·Π΄Π°ΡΡΠ°Ρ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ². ΠΡΠΊΠΎΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ², Π½ΠΎ ΠΏΠΎΠΊΠ° ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌΡΡ Π½Π° injector.get()
. ΠΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Car
Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅? ΠΠ°ΠΊ Π½Π°Ρ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΡΠ·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Β«carΒ»? Π§ΡΠΎ ΠΆ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡ Car
β¦
ΠΡ ΠΈΠΌΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌ ΠΈΠ· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΡΡΡΠ½ΠΎΡΡΡ Inject ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ Π΅Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠ° ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ Inject
ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΡ Car
, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ DI. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π²ΠΎΡ ΡΡΠΎ ΠΌΡ Π·Π΄Π΅ΡΡ Π΄Π΅Π»Π°Π΅ΠΌ: ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ DI, ΡΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ ΡΠΈΠΏΠ° Engine
, Π²ΡΠΎΡΠΎΠΉ β ΡΠΈΠΏΠ° Tires
ΠΈ ΡΡΠ΅ΡΠΈΠΉ β ΡΠΈΠΏΠ° Doors
. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π² Π΄ΡΡ
Π΅ TypeScript, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π²ΡΠ³Π»ΡΠ΄Π΅Π» Π±ΠΎΠ»Π΅Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ:
ΠΡΠ»ΠΈΡΠ½ΠΎ, Π½Π°Ρ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, Π° DI ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Car
. ΠΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΡΠ·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ? ΠΠ΄Π΅ΡΡ-ΡΠΎ Π² ΠΈΠ³ΡΡ ΠΈ Π²ΡΡΡΠΏΠ°ΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ. ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ resolveAndCreate()
, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ²?
ΠΠΏΡΡΡ ΠΆΠ΅, ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π²ΠΎΠΏΡΠΎΡ, ΠΊΠ°ΠΊ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»Π°ΡΡΠΎΠ² Π±ΡΠ΄Π΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ².
ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΡΠ»ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΈ ΠΏΡΠΎΡΡΡΠ°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΠΎ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΠ½ΠΈΡΡΡ:
Π£ Π½Π°Ρ Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ provide()
, ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΠ°Ρ ΠΌΠ°ΡΠΊΠ΅Ρ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠΎΡ ΠΌΠ°ΡΠΊΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΈΠΏΠΎΠΌ Π»ΠΈΠ±ΠΎ ΡΡΡΠΎΠΊΠΎΠΉ. ΠΡΠ»ΠΈ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΡΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ, ΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ. ΠΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° Car
ΡΠ΅ΡΠ΅Π· ΠΊΠ»Π°ΡΡ Car
, ΡΠΈΠΏ Engine
ΡΠ΅ΡΠ΅Π· ΠΊΠ»Π°ΡΡ Engine
ΠΈ Ρ.Π΄. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ-ΡΠ΅ΡΠ΅ΠΏΡ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ Π²ΡΡΠ΅. ΠΡΠ°ΠΊ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² ΠΌΡ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ°Π΅ΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΈΡ
Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ: ΠΊΠΎΠ³Π΄Π° ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ? ΠΠ°ΡΠ΅ΠΌ ΠΏΠΈΡΠ°ΡΡ provide(Foo,
, Π΅ΡΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΌ Foo, Π²Π΅ΡΠ½ΠΎ? ΠΠ°, Π²Π΅ΡΠ½ΠΎ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ ΡΡΠ°Π·Ρ Π½Π°ΡΠ°Π»ΠΈ Ρ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΠΌΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅, ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ. ΠΠ·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°.
ΠΠ΅ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π° ΡΡΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ. ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌ ΠΌΠ°ΡΠΊΠ΅Ρ Engine
Π½Π° ΠΊΠ»Π°ΡΡ OtherEngine
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΌΡ ΡΠ΅ΠΏΠ΅ΡΡ Π·Π°ΠΏΡΠΎΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Engine
, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° OtherEngine
.
ΠΡΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½, Π½ΠΎ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΈΠΏ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°Ρ Π΅Π³ΠΎ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ³ΡΡΠΆΠ°ΡΡ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π·Π°ΠΌΠ΅Π½ΡΡ Π΅Π΅ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠΌ ΠΈ Π½Π΅ ΡΡΠΎΠ³Π°Ρ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄.
ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2 ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ Π΅ΡΠ΅ ΠΏΠ°ΡΡ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ² ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ², ΠΎ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ²
ΠΠ½ΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ°, Π° ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π±ΡΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ DI Π² Angular 2 ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅ΠΏΡΠΎΠ². ΠΠ°Π²Π°ΠΉΡΠ΅ Π±ΡΡΡΡΠΎ ΠΏΡΠΎΠ±Π΅ΠΆΠΈΠΌΡΡ ΠΏΠΎ Π½ΠΈΠΌ.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ
ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΆΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΌΠ°ΡΠΊΠ΅Ρ-ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ, Π²ΠΎΡ ΡΠ°ΠΊ:
ΠΠ°, Π½Π°ΡΠΈ Π»ΡΠ±ΠΈΠΌΡΠ΅ ΡΠ°Π±ΡΠΈΠΊΠΈ
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΠ°Π±ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π§ΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ°Π±ΡΠΈΠΊΠ΅, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΡΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠ°ΡΠΊΠ΅ΡΠΎΠ²:
ΠΠ΅ΠΊΠΎΡΠ°ΡΠΎΡ @Optional
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅. ΠΡΠΎ Π±ΡΠ²Π°Π΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π² ΡΠ΅Ρ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ Π½Π° ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, Π° Π΅ΡΠ»ΠΈ ΡΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° β Π½ΡΠΆΠ΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΎΡΠΊΠ°ΡΠ°.
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, DI Π² Angular 2 ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ Ρ DI Π² Angular. ΠΠΎ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠΏΡΠΎΡ ΠΌΡ Π΅ΡΠ΅ Π½Π΅ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ. Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ ΠΏΡΠΈ Π½ΠΎΠ²ΠΎΠΌ DI? ΠΠ°.
ΠΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΈ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ
ΠΡΠ»ΠΈ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΎΠ΄Π½ΠΎΡΠ°Π·ΠΎΠ²Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ (transient dependency) β ΡΠ°ΠΊΠ°Ρ, ΠΏΡΠΈ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π½Π°ΠΌ Π²ΡΠ΅Π³Π΄Π° ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΅Π΅ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, Π΅ΡΡΡ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ°:
Π€Π°Π±ΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΡΠΎ Π±ΡΠ΄ΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠΈ.
ΠΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Injector.resolveAndCreateChild()
. ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΏΡΠΈΠ²Π½ΠΎΡΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ, ΠΈ ΡΡΠΎΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ»ΠΈΡΠ΅Π½ ΠΎΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ°.
ΠΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Ρ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈΠΌ. ΠΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΊΠ°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π½Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ΅, Π΅ΡΠ»ΠΈ Π½Π° Π΄ΠΎΡΠ΅ΡΠ½Π΅ΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π½Π΅ Π·Π°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ:
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΡΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ°, Π΄Π²Π° ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ β Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΠΎΡΠΈΠΌ Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° Car, ΡΠΎ ΡΡΠΎΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Β«carΒ». ΠΠ΄Π½Π°ΠΊΠΎ Β«engineΒ» (Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ) Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΌ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠΎΠΌ, Π° Β«tiresΒ» (ΡΠΈΠ½Ρ) ΠΈ Β«doorsΒ» (Π΄Π²Π΅ΡΡΡ) β ΡΠ°ΠΌΡΠΌ Π²ΡΡΠ΅ΡΡΠΎΡΡΠΈΠΌ ΠΈΠ· Π²Π½Π΅ΡΠ½ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠΎΠ². ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ².
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΡΠΎΠ²Π΅Π½Ρ, Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΊΠ°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠ° Π΄Π»Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠ°ΡΡΠΈ.
ΠΠ°ΠΊ ΠΆΠ΅ Π²ΡΠ΅ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Angular 2?
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular 2, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠΎΠ»ΠΆΠ½Ρ Π»ΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ Π²ΡΡΡΠ½ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Angular 2? Π ΡΡΠ°ΡΡΡΡ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Angular Π½Π΅ ΠΆΠ°Π»Π΅Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΡΠΈΠ», ΠΈ ΡΠΎΠ·Π΄Π°Π»Π° ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ API, ΡΠΊΡΡΠ²Π°ΡΡΠΈΠΉ Π²ΡΡ ΠΌΠ°ΡΠΈΠ½Π΅ΡΠΈΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ° ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² Angular 2.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Angular 2.
ΠΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ NameService
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. Π’Π°ΠΊΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΏΡΡΡ ΠΆΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ. ΠΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»Π°ΡΡ. ΠΠ°ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΠΎΡΠΊΡΡΡΡ ΠΊ Π½Π΅ΠΌΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊΠ°ΠΊ ΠΊ Π²Π½Π΅Π΄ΡΡΠ΅ΠΌΠΎΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ°. ΠΠΎ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΡ Π΅ΡΠ΅ Π΄Π°ΠΆΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ.
ΠΠ΅ΡΠΎΠ΄ bootstrap()
Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΠ° Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠ΅. ΠΠ½ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠΎΠ² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π²ΡΠΎΡΠΎΠ³ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°, ΠΈ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡΡ ΠΏΡΡΠΌΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π²ΠΎΡ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ:
ΠΠΎΡ ΠΈ Π²ΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ, ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Ρ ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠΌΡ, ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ ΠΈΠ·ΡΡΠ΅Π½Π½ΡΠ΅ Π²ΡΡΠ΅ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΡ @Inject
.
ΠΠΈΠ±ΠΎ, Π΅ΡΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° TypeScript, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ² ΠΊ Π½Π°ΡΠ΅ΠΌΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ:
Π¨ΠΈΠΊΠ°ΡΠ½ΠΎ! ΠΡΡ Π½ΡΡΡΡΠ½ΠΊΠ° Angular ΡΡΠ΄Π΅ΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΡΠ΄Π°-ΡΠΎ ΠΈΡΡΠ΅Π·Π»Π°! ΠΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΎΠΏΡΠΎΡ: ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΈΠ½Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ?
ΠΠΎΠΏΡΡΡΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡ NameService
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄ΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ
Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΈΠΏΠ° NameService
, Π½ΠΎ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΈΠ½ΠΎΠΉ ΡΠ΅ΡΠ²ΠΈΡ? ΠΠ΄Π΅ΡΡ-ΡΠΎ Π½Π°ΠΌ ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ providers
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ @Component
. ΠΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΡ ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (Π° ΡΠ°ΠΊΠΆΠ΅ Π΅Π³ΠΎ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ).
ΠΠΎΡΡΠ½Ρ: providers
Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ Π²Π½Π΅Π΄ΡΡΡΡΡΡ. ΠΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΈΠ½ΠΆΠ΅ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΡ Π½Π°ΡΠΈΡ
ΠΏΡΠΈΠ²ΡΠ·ΠΎΠΊ, ΡΠΎΡΠ½Π΅Π΅ β ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²Π½Π΅Π΄ΡΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ viewProviders ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°, Π½ΠΎ Π½Π΅ Π΄Π»Ρ Π΅Π³ΠΎ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ².
ΠΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Π² Angular ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π²ΡΠΈΠ΅ Ρ DI Π² Angular 1. ΠΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΠΈΠΌΠ΅Π½. ΠΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Π΄Π°ΠΆΠ΅ Π±Π΅Π· Angular 2.



