angular 自定义组件中实现双向绑定

在自定义中,常常要使用到自定义双向绑定,那么要怎么做呢?其实代码也很简单,先直接来看代码
定义双向绑定代码:

import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';

@Component({
    selector: 'app-my-model',
    templateUrl: './my-model.component.html',
    styleUrls: ['./my-model.component.scss']
})
export class MyModelComponent implements OnInit {
    /**
     * 自定义model变量
     */
    private _myModel;
    /**
     * 返回父组件变化后的值
     */
    @Input()
    get myModel() {
        return this._myModel;
    }

    /**
     * 组件值产生变化后父组件改变
     * @param value
     */
    set myModel(value) {
        this._myModel = value;
        this.myModelChange.emit(value);
    }
    @Output()
    myModelChange: EventEmitter<any> = new EventEmitter();

    constructor() {
    }

    ngOnInit() {
    }
}

使用

<app-my-model [(myModel)]="myModel"></app-my-model>

步骤:
1.自定义一个变量,如myModel
2.为变量设置get/set方法
3.在get方法上增加@Input()注解用于返回父组件变化后的值,创建output绑定事件,由组件绑定事件EventEmitter向父组件传输信息。
4.修改set方法,在set方法中增加“发射”事件方法,如this.myModelChange.emit(value);

注意: 属性名 + 后缀 Change是一个双向绑定的固定写法,使用时,就可以通过[(myModel)]=“我的变量” 进行双向绑定了。当然,如果想要做事件和属性绑定拆分也是可以的,用法如下:

<app-my-model [myModel]="myModel" (myModelChange)="onMyModelChange($event)"></app-my-model>

这里方法的第一个参数必须是"event",这里的"event"比较特殊,它表示的是我们在组件中emit的值。在ts中:

onMyModelChange(value: any) {
        this.myModel = value;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,087评论 3 119
  • 前言 您将在本文当中了解到,往网页中添加数据,从传统的dom操作过渡到数据层操作,实现同一个目标,两种不同的方式....
    itclanCoder阅读 26,196评论 1 12
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 177,179评论 25 709
  • 王姨是我们这个小区开发商曲总的妈妈,曲总是远近闻名的孝子,新小区在顶楼给自己母亲和姐姐各留了一套房子,我一直认为,...
    新澜阅读 4,610评论 0 1
  • 李白 故人西辞黄鹤楼, 烟花三月下扬州。 孤帆远影碧空尽, 惟见长江天际流。
    David_Lau阅读 3,833评论 0 0

友情链接更多精彩内容