• Angular 组件的双向绑定


    组件双向绑定的本质就是属性绑定加事件绑定,在引发绑定事件的时候改变属性值。举个例子:

    // 子组件
    import { Component, Input, Output, EventEmitter } from '@angular/core';
    
    @Component({
      selector: 'app-sizer',
      template: `
        <p>子组件中的值:{{size}}</p>
        子组件中改为:<span (click)="change.emit($event.target.textContent)">
          <button>small</button>
          <button>large</button>
        </span>
      `,
    })
    export class SizerComponent {
      @Input() size: 'small' | 'large' = 'small';
      @Output() change = new EventEmitter();
    }
    
    import { Component } from "@angular/core";
    
    @Component({
      selector: 'my-app',
      template: `
        <p>父组件中的值:{{size}}</p>
        <app-sizer [size]="size" (change)="size = $event"></app-sizer>
      `,
    })
    export class AppComponent {
      size = 'large';
    }
    

    其中属性绑定 [size]="size" 将值传入组件,事件绑定 (change)="size = $event" 让组件发生变化时将变化的值输出赋值给 size ,这样一来便实现了双向绑定。

    Angular 的双向绑定语法是方括号和圆括号的组合 [()]。要使用该语法,@Output() 属性的名字必须遵循 inputChange 模式,其中 input 是相应 @Input() 属性的名字。我们把例子中的 change 改为 sizeChange 就可以使用双向绑定语法了,即 <app-sizer [(size)]="size"></app-sizer>

    Angular 的 FormsModule 提供了一个 ngModel 指令,使用 [(ngModel)]="变量" 形式可以进行双向绑定。这其实是一个语法糖,相当于[ngModel]="变量" (ngModelChange)="变量 = $event"

    文中使用的工具或者包的版本:
    Angular CLI 11.0.6

  • 相关阅读:
    动态规划 最长公共子序列 LCS,最长单独递增子序列,最长公共子串
    梳排序(Comb sort)
    地精排序(Gnome Sort) 算法
    vs2010 调试 调用堆栈 窗口
    vs2010 条件断点 has changed是什么意思?
    vs2010根据字符串内容添加断点
    vs2010 调试中监视变量
    vs2010断点使用技巧
    区间重合判断(pojg校门外的树)
    转:Linus:利用二级指针删除单向链表
  • 原文地址:https://www.cnblogs.com/yshenhua/p/14599318.html
Copyright © 2020-2023  润新知