Detailed explanation of angular two-way binding

Detailed explanation of angular two-way binding

Bidirectional binding principle

Two-way binding combines property binding with event binding.

Angular's two-way binding syntax is a combination of square brackets and parentheses [()].

[] is used for property binding, and () is used for event binding.

The naming rule is [input name] + Change.

  • Property Binding ( Input ) - Sets a specific element attribute.
  • Event Binding ( Output -output) − Listens for element change events.

Therefore, there are ngModel and ngModelChange in the form two-way binding, and you can also customize the two-way binding properties.

ngModel

Two-way binding to form elements

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-bind',
  template: `
    <div>
      <div>Name: {{ name }}</div>
      <input type="text" style="width: 300px;" nz-input name="name" [(ngModel)]="name" autocomplete="off">
    </div>
  `
})
export class BindComponent implements OnInit {
  name = '';
  constructor() { }
  ngOnInit(): void { }
}

Rendering

Rendering

Custom two-way binding properties

Component-html

<div>
  <div>inner: {{ value }}</div>
  <input style="width: 300px;" nz-input (input)="onInput(input.value)" #input autocomplete="off">
</div>

Component-ts

import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
@Component({
  selector: 'app-inner',
  templateUrl: './inner.component.html',
  styleUrls: ['./inner.component.scss']
})
export class InnerComponent implements OnInit {
  // Set input properties @Input() value!: string;
  // Set output event @Output() valueChange: EventEmitter<string> = new EventEmitter();
  constructor() { }
  ngOnInit(): void { }
  onInput(value: string){
    // Trigger output event - output data this.valueChange.emit(value);
  }
}

External use

import { Component, OnInit } from '@angular/core';
@Component({
  selector: 'app-outer',
  template: `
    <div>
      <div>Name: {{ name }}</div>
      <app-inner [(value)]="name"></app-inner>
    </div>
  `
})
export class OuterComponent implements OnInit {
  name = '';
  constructor() { }
  ngOnInit(): void { }
}

Rendering

Rendering

Summarize

This article ends here. I hope it can be helpful to you. I also hope you can pay more attention to more content on 123WORDPRESS.COM!

You may also be interested in:
  • Detailed explanation of two methods to implement two-way binding of custom components in Angular
  • Solve the problem that angular two-way binding has no effect and ng-model cannot be displayed normally
  • Solve the problem that [(ngModel)] cannot be used in angular2 when two-way data binding
  • AngularJS two-way data binding principle: application of $watch, $apply and $digest
  • An example of implementing two-way data binding with Angular custom components
  • A brief discussion on the principle of two-way binding in AngularJs (data binding mechanism)

<<:  CSS3 filter (filter) to achieve the sample code of gray or black mode of web page

>>:  Linux system calls for operating files

Recommend

Share 12 commonly used Loaders in Webpack (Summary)

Table of contents Preface style-loader css-loader...

Using JS to implement binary tree traversal algorithm example code

Table of contents Preface 1. Binary Tree 1.1. Tra...

Introduction to HTML page source code layout_Powernode Java Academy

Introduction to HTML page source code layout This...

Use elasticsearch to delete index data regularly

1. Sometimes we use ES Due to limited resources o...

React-native sample code to implement the shopping cart sliding deletion effect

Basically all e-commerce projects have the functi...

How to prohibit vsftpd users from logging in through ssh

Preface vsftp is an easy-to-use and secure ftp se...

How to query and update the same table in MySQL database at the same time

In ordinary projects, I often encounter this prob...

How to open ports to the outside world in Alibaba Cloud Centos7.X

In a word: if you buy a cloud server from any maj...

Mysql solution to improve the efficiency of copying large data tables

Preface This article mainly introduces the releva...

Example code for text origami effect using CSS3

Preface This article mainly shares with you an ex...

CSS--overflow:hidden in project examples

Here are some examples of how I use this property ...

How to deploy a simple c/c++ program using docker

1. First, create a hello-world.cpp file The progr...

HTML form tag usage learning tutorial

Forms in HTML can be used to collect various type...