Wiązanie jednokierunkowe nie pozwala na odzwierciedlenie zmian szablonu w kodzie napisanym w TypeScript. Rozwiązaniem tego problem jest wiązanie dwukierunkowe, które jest zapewnione przez Angular. Pozwala na aktualizowanie danych z kompomentu do widoku i odwrotnie.
W przypadku wiązania dwukierunkowego synchronizacja danych pomiędzy modelem a widokiem odbywa się automatycznie. Zmiana zawsze znajduje odzwierciedlenie w obu komponentach. Wiązanie dwukierunkowe stanowi połączenie wiązania właściwości oraz zdarzeń.
Składania wiązania przedstawia się w poniższy sposób:
[(ngModel)] = "[właściwość zdefiniowana w komponencie]"Adnotacja: aby poprawnie korzystać z tego wiązania musimy włączyć dyrektywę ngModel. Zależy ona pakietu FormsModule, który musimy zaimportować korzystając z tablicy imports w pliku app.module.ts. Spójrzcie na poniższy kod wraz z komentarzami:
import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; // Importujemy dany pakiet import {FormsModule} from '@angular/forms'; import { AppRoutingModule } from './app-routing.module'; import { DashboardComponent } from './Dashboard/dashboard.component'; import { PropertBindingComponent } from './Components/property-binding/property-binding.component'; import { StringInterpolationComponent } from './Components/string-interpolation/string-interpolation.component'; import { EventBindingComponent } from './Components/event-binding/event-binding.component'; import { TwoWayDataBindingComponent } from './Components/two-way-data-binding/two-way-data-binding.component'; @NgModule({ declarations: [ DashboardComponent, PropertBindingComponent, StringInterpolationComponent, EventBindingComponent, TwoWayDataBindingComponent ], imports: [ BrowserModule, AppRoutingModule, // Dodajemy do listy modułów z których korzystamy FormsModule ], providers: [], bootstrap: [DashboardComponent] }) export class AppModule { }Dzięki takiej definicji możemy korzystać z tej funkcjonalności w każdym komponencie.