Component Interaction
Pass data between HTML and TS
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠΈ
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ title
import {Component} from '@angular/core'
@Component({
selector: 'app-card',
templateUrl: './card.component.html',
styleUrls: [
'./card.component.scss'
]
})
export class CardComponent {
title = 'My Card Title'
}
Π§Π΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΡ ΠΏΠ΅ΡΠ΅Π½Π½ΡΡ Π² Π½Π°Ρ ΡΠ°Π±Π»ΠΎΠ½:
ΠΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΡΡΡΠΎΠΊΠ΅ β Π»ΡΠ±ΡΠ΅ ΠΏΡΠΎΡΡΡΠ΅ ΡΠΈΠΏΡ. ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ [object Object]. Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ°ΠΊΠΈ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΡΡΡΠΊΡ ΠΊΠ°ΠΊ ΠΏΠ°ΠΉΠΏΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½Π²Π΅ΡΡΠ½Π΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ Π² json:
Π§Π΅ΡΠ΅Π· ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ (ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π² ΠΊΠ»Π°ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°)
Π angular ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΈΠΈ:
Bindings
ΠΡΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ²ΡΠ·ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Angular. ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π² ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ (ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ ΡΡΠΎ-ΡΠΎ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ β ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΎΡΡ Π²ΠΎ view).
ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΌΠ΅Π½ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ°Π±Π»ΠΎΠ½Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ).
Π html:
ΠΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ΅Π½. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ binding.
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠ° Π² ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ:
Π‘ΠΎΠΎΡΠ², Angualr ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ, ΡΡΠΎ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ Π°ΡΡΠΈΠ±ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ΄ TS (ΠΈΠ»ΠΈ JS).
Event binding (Two Way Binding)
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠΈΡ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΈ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°:
Π angular Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅ΡΠ΅ ΠΏΡΠΎΡΠ΅. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² Π½Π°ΡΠ΅ΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅, Π² ΠΏΠΎΠ»Π΅ imports ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ β FormsModule:
ΠΠΎΠ΄ΡΠ»Ρ FormsModule ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΡΠΌΠ°ΠΌΠΈ, ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ngModel, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Two Way Binding Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΏΡΠΎΡΠ΅ (ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ ΠΈ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΠΈ Π² ΠΊΡΡΠ³Π»ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ngModel ΠΈ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΡΠΎ ΠΏΠΎΠ»Π΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ ΠΎΡΠΈΠΌ ΡΠ²ΡΠ·Π°ΡΡ Π² Π΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅):
Pass data between parent and child components
Parent -> Child ( @Input() )
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΡΠ΅ΡΠ΅Π· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @Input().
ΠΠ΄Π΅-ΡΠΎ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°:
Child -> Parent ( @Output() )
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΡΠ΅ΡΠ΅Π· Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡ @Output().
ΠΠ΄Π΅-ΡΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅
Calls functions to other components
Calls child's functions from the parent component
ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ° β #childComponent. ΠΡΠΈΠΌΠ΅Ρ:
ΠΡΡΠ³ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± (Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ) β ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π²Π½ΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π· @ViewChild. ΠΡΠΈΠΌΠ΅Ρ:
Using a service
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ²ΠΈΡΠ°:
Π ΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΠΎΡΠ΅ΡΠ½ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ
ΠΡΠΏΠΈΡΠΊΠ° ΠΎΡ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ngOnDestroy() ΠΊΡΠ°ΠΉΠ½Π΅ Π²Π°ΠΆΠ½Π° Π΄Π»Ρ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠΊ ΡΡΠΎ Π·Π°ΡΠΈΡΠ°Π΅Ρ ΠΎΡ ΡΡΠ΅ΡΠ΅ΠΊ ΠΏΠ°ΠΌΡΡΠΈ (Π΄Π»Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ Π½Π°Π΄ΠΎ, ΡΠΊ ΡΠ΅ΡΠ²ΠΈΡ SomeService Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ).
Last updated