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

HTML drawing user registration page

This article shares the specific implementation c...

Detailed explanation of Nodejs array queue and forEach application

This article mainly records the problems and solu...

How to install and use Ubuntu Docker

Table of contents 1. Automatic installation using...

Analysis of the configuration process of installing mariadb based on docker

1. Installation Search the mariadb version to be ...

MySQL 5.7.21 installation and password configuration tutorial

MySQL5.7.21 installation and password setting tut...

A brief discussion on why daemon off is used when running nginx in docker

I'm very happy. When encountering this proble...

Analysis of the process of building a cluster environment with Apache and Tomcat

In fact, it is not difficult to build an Apache c...

HTML form value transfer example through get method

The google.html interface is as shown in the figur...

win2008 server security settings deployment document (recommended)

I had been working on the project before the New ...

How to make your own native JavaScript router

Table of contents Preface Introduction JavaScript...

Linux system dual network card binding configuration implementation

System version [root@ ~]# cat /etc/redhat-release...

CSS3 realizes the animation effect of lotus blooming

Let’s look at the effect first: This effect looks...

Linux cut command explained

The cut command in Linux and Unix is ​​used to cu...

Record a slow query event caused by a misjudgment of the online MySQL optimizer

Preface: I received crazy slow query and request ...