Egyszerű példa az egyutas és kétutas kötésre az Angular 8-ban
Egyutas kötés:
A következőkben megmutatjuk, hogyan köthetjük a tulajdonságokat egyirányú kötéssel, amelyet tulajdonságkötésnek is neveznek. Az egyirányú kötés a tulajdonságot a komponenstől a nézethez köti. De a probléma itt az, hogy ha módosítja ugyanannak a tulajdonságnak az értékét a html oldalon, akkor ez nem frissíti azt a komponens szintjén, a tulajdonság komponens értéke ugyanaz marad. Ahol használhatjuk az egyirányú kötést:
- Az adatbázisból kapott és a komponens szinten deklarált tulajdonságba vagy modellbe betöltött értékek megjelenítése
txtName: string= “Test 1”;
- A komponens szinten dinamikusan elvégzett bármely számítás eredménye frissíthető a View oldalon, egyszerűen hozzárendelve a legújabb értéket ehhez a tulajdonsághoz a komponens szinten, az alábbiak szerint:
this.txtName = “Test 2”;
Az egyirányú kötés használata:
1. megközelítés: Ha csak a tulajdonság értékét jeleníti meg a <div>-ben, ahogy az alább látható, akkor használja a következő szintaxist:
<div>Name is: {{txtName}}</div>
Megközelítés 2: Ha szövegdobozt használ, és a tulajdonság értékét egy szövegdobozban szeretné megjeleníteni, akkor a következő szintaxist használhatja ehhez:
<input type=”text” =”txtName” />
A fenti szintaxisban csak szögletes zárójelet használtunk, ami az egyirányú adatkötés elérésének egyik módja. Ha a szögletes zárójel mellé kerek zárójelet is adunk, akkor kétirányú adatkötés lesz belőle.
Kétirányú kötés:
Ezben a komponensből frissített tulajdonság értéke tükröződik a nézetben és fordítva. Ahogy az alábbi példában látható, a kétirányú kötés egy olyan tulajdonsághoz lesz használva, amely egy szövegdobozhoz vagy bármilyen más típusú beviteli mezőhöz van hozzárendelve. Így a Text-box értékének bármilyen módosítása automatikusan tükröződik minden olyan helyen, ahol ez a tulajdonság megjelenik vagy használatban van.
<input type=”text” =”txtName” />
A fenti szintaxisban látható módon az ngModel-t szögletes és kerek zárójelbe kell zárnunk. Ezáltal a fenti Text-box kétirányú adatkötésű bemeneti mezővé válik.
Egyszerű példa egy teljes egyirányú és kétirányú adatkötésre Angular 8-ban:
A következőkben a sample-data-binding.component.ts fájl adatai:
A következőkben a sample-data-binding.component.html fájl adatai:
A fenti kód eredménye:
A fenti példa szerint, amikor betöltjük ezt az oldalt, így betöltéskor az összes helyen megjelenik a “Test 1” mint érték, amikor módosítjuk az első szövegdoboz értékét, akkor csak ugyanannak a szövegdoboznak az értékét módosítja, nem frissíti az értékeket az összes helyen, mert ez egyirányú adatkötés, de ha módosítjuk a második szövegdobozt, amely kétirányú adatkötés, akkor frissíti ezt a mezőt a View és a komponens összes helyén.