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.