如何编写一个完整的Angular4 FormText 组件


Posted in Javascript onNovember 18, 2017

本文主要介绍了如何编写一个完整的Angular4 FormText 组件,分享给大家,也给自己留个笔记

组件定义

import { Component, Output, Input, forwardRef, EventEmitter} from '@angular/core';
import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';

@Component({
 selector: 'form-text',
 template: `
  <div >
    <label>{{label}}:</label>
    <input type="text" [(ngModel)]="value"
    placeholder="{{placeholder}}" >
  </div>
 `,
 providers: [
  {
   provide:NG_VALUE_ACCESSOR,
   useExisting:forwardRef(()=>FormTextComponent),
   multi:true
  }
 ]
})
export class FormTextComponent implements ControlValueAccessor {
 
 @Input() label:string = '';
 @Input() placeholder: string='';

 @Output() onChange: EventEmitter<any> = new EventEmitter<any>();
 
 public innerValue: any;
 public changeFn: Function = () => {};
 

 get value(): any {
  return this.innerValue;
 };

 set value(v: any) {
  if (v !== this.innerValue) {
   this.innerValue = v;
   this.changeFn(v);
  }
 }


 writeValue(value: any) {
  if (value !== this.innerValue) {
   this.innerValue = value;
  }
 }

 registerOnChange(fn: any) {
  this.changeFn = fn;
 }

 registerOnTouched(fn: any) {
  //
 }

}

组件使用

<form-text [(ngModel)]="mobile" [placeholder]="placeholder" [label]="label"></form-text>
<p>{{mobile}}</p>

需要注意的点:

1.需要配置组件的providers
2.需要实现ControlValueAccessor接口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
根据身份证号自动输出相关信息(籍贯,出身日期,性别)
Nov 15 Javascript
JavaScript基础语法、dom操作树及document对象
Dec 02 Javascript
jQuery中;function($,undefined) 前面的分号的用处
Dec 17 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
jQuery轮播图实例详解
Aug 15 jQuery
vue router的基本使用和配置教程
Nov 05 Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 Javascript
详解element-ui中el-select的默认选择项问题
Aug 02 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 Javascript
Angular中支持SCSS的方法
Nov 18 #Javascript
VUE element-ui 写个复用Table组件的示例代码
Nov 18 #Javascript
jQuery实现checkbox的简单操作
Nov 18 #jQuery
浅谈Emergence.js 检测元素可见性的 js 插件
Nov 18 #Javascript
基于jquery实现五星好评
Nov 18 #jQuery
基于JavaScript实现五子棋游戏
Aug 26 #Javascript
JavaScript canvas实现围绕旋转动画
Nov 18 #Javascript
You might like
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
2015/09/22 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
jQuery中的bind绑定事件与文本框改变事件的临时解决方法
2010/08/13 Javascript
js快速排序的实现代码
2013/12/08 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
使用jquery操作session方法分享
2015/01/22 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
JavaScript判断数字是否为质数的方法汇总
2016/06/02 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
AngularJS控制器详解及示例代码
2016/08/16 Javascript
xmlplus组件设计系列之网格(DataGrid)(10)
2017/05/05 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
koa上传excel文件并解析的实现方法
2018/08/09 Javascript
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
解决Pycharm无法import自己安装的第三方module问题
2018/05/18 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
使用pytorch 筛选出一定范围的值
2020/06/28 Python
python 实现Harris角点检测算法
2020/12/11 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
毕业生求职简历中的自我评价
2013/10/18 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
教师工作自我鉴定范文
2014/09/14 职场文书
中学教师读书笔记
2015/07/01 职场文书
python解决12306登录验证码的实现
2021/04/18 Python
Go语言带缓冲的通道实现
2021/04/26 Golang
python+opencv实现视频抽帧示例代码
2021/06/11 Python
警用民用对讲机找不同
2022/02/18 无线电
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server