Этот блог в первую очередь посвящен тому, что такое привязка данных и ее типам: –
- Интерполяция строк
- Привязка свойств
- Привязка событий
- Двусторонняя привязка данных
Привязка данных — одна из самых мощных и важных функций языка разработки программного обеспечения. Это позволяет нам определить связь между компонентом и представлением. Таким образом, мы можем сказать, что привязка данных передается от компонента к представлению и от представления к компоненту.
1: Интерполяция.Это тип односторонней привязки данных. Текст между фигурными скобками часто является именем свойства компонента. Angular замените это имя строковым значением соответствующего свойства компонента. Синтаксис интерполяции строк заключается в использовании двойных фигурных скобок {{ и }}.
Теперь откройте файл binding.component.html и напишите свой код для интерполяции строк.
<h1>Data Binding in Angular</h1><br> <h2>{{stringInterpolation}}</h2>
Для достижения желаемого метода привязки данных обновите следующий код в файле binding.component.ts.
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-binding', templateUrl: './binding.component.html', styleUrls: ['./binding.component.css'] }) export class BindingComponent implements OnInit { constructor() { } stringInterpolation = 'Learning string interpolation'; ngOnInit() { } }
Вывод:
2: PropertyBinding: привязка свойства позволяет нам привязать представление выражения шаблона. Привязка свойства простыми словами определяется как обновление значения определенной переменной в компоненте (модели) и отображение его в представлении (уровень представления).
Это односторонний механизм, который позволяет вам изменять значение в любое время, но только на уровне компонента.
binding.component.html
<h1>PropertyBinding</h1> <img [src]="imagePath" class="image-adjustment"/><br>
Примечание. Вы можете выполнить привязку свойства, используя квадратные скобки для тега src, а также заключайте значение компонента в кавычки.
binding.component.ts
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-binding', templateUrl: './binding.component.html', styleUrls: ['./binding.component.css'] }) export class BindingComponent implements OnInit { constructor() { } imagePath: string = 'assets/images/Databinding.png'; ngOnInit() {} } }
Хотя оба делают одно и то же, так в чем же разница между связыванием свойств и интерполяцией?
Для лучшего понимания обратитесь к приведенному ниже примеру:
Теперь мы берем одну кнопку, и значение кнопки исходит из класса компонента, который отключен с помощью свойства disabled.
binding.component.html
<h1>Data Binding in Angular</h1><br> <h1>Interpolation</h1> <img src = {{imagePath}} class="image-adjustment"/> <br> <button disabled={{currentValue}}>CLICK ME</button>
Теперь то же самое будет делаться с привязкой свойств. В Property Binding атрибут [disable] мы должны определить в квадратных скобках, а в кавычках можно указать имя переменной.
<h1>PropertyBinding</h1> <img [src]="imagePath" class="image-adjustment"/><br> <button [disabled]="currentValue" (click)="onClick()">CLICKME</button>
binding.component.ts
export class BindingComponent implements OnInit { constructor() { } imagePath: string = 'assets/images/Databinding.png'; currentValue: boolean = true; ngOnInit() {} }
Вывод:
Итак, теперь вы можете проверить, что обе кнопки сейчас отключены, но сейчас, если мы изменим значение переменной на false, мы увидим, что кнопка в интерполяции строк по-прежнему отключена, в то время как в привязке свойств она теперь включена.
Пример:
export class BindingComponent implements OnInit { constructor() { } imagePath: string = 'assets/images/Databinding.png'; currentValue: boolean = false; ngOnInit() { } }
Вывод:
Теперь мы видим, что кнопка в интерполяции строк по-прежнему отключена, а в привязке свойств теперь включена.
Примечание. Поэтому там, где вам нужно использовать строковое выражение, используйте интерполяцию, а когда вы имеете дело с нестроковым выражением, используйте привязку свойства.
3: Привязка события. Привязка события простыми словами определяется как обновление/отправка значения/информации определенной переменной из уровня представления (представления) в компонент (модель). Например: нажатие кнопки.
binding.component.html
<h1 Event Binding></h1> <h1>{{title}}</h1> <button (click)="changeMyTitle()">Title is changed on click of this button.</button>
binding.component.ts
export class BindingComponent implements OnInit { constructor() { } title = 'Learning string interpolation'; ngOnInit() { } changeMyTitle() { this.title = 'Learning Event Binding'; } }
Вывод:
Теперь пользователь будет выполнять любое действие из шаблона, и в соответствии с этим этот метод будет вызываться и выполняться. Кроме того, не только click(), вы также можете использовать другие события, такие как отправка, ввод с помощью мыши, события размытия и т. д.
4: Двусторонняя привязка данных. Двусторонняя привязка данных представляет собой комбинацию привязки свойств и событий и представляет собой непрерывную синхронизацию данных из представления с компонентом и компонента с представлением. то есть изменения, внесенные в данные компонента, должны синхронизироваться с представлением и должны немедленно обновить модель в соответствующий компонент с данными представления.
Двусторонняя привязка данных в основном используется в формах ввода данных, где пользователь изменяет представление и вносит изменения в модель с данными представления и наоборот. Итак, как мы знаем, angular использует комбинацию привязки свойств и привязки событий для реализации двусторонней привязки данных с помощью директивы ngModel.
NgModel не является частью библиотеки углового кода, он определен в библиотеке модулей форм, поэтому вам нужно импортировать библиотеку FormsModule, поэтому вам нужно импортировать FormsModule в app.module.ts, и он исходит из библиотеки, т.е. угловых форм, и теперь мы можно использовать директиву ngModel для реализации двусторонней привязки данных.
binding.component.html
<h1>Data Binding in Angular</h1> <h2>Learning Two-Way DataBinding</h2> <input type = "text" [(ngModel)]="userName"/> <br> <h4>Welcome: {{userName}}</h4>
Вывод:
Спасибо за чтение!!!
Первоначально опубликовано на сайте blog.knoldus.com 24 сентября 2018 г.