如何编写一个完整的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 相关文章推荐
使用IE6看老赵的博客 jQuery初探
Jan 17 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
三种方式获取XMLHttpRequest对象
Apr 21 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
Apr 08 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
ECMAScript6--解构
Mar 30 Javascript
微信小程序 标签传入数据
May 08 Javascript
vue axios 二次封装的示例代码
Dec 08 Javascript
JavaScript读写二进制数据的方法详解
Sep 09 Javascript
Vue+tracking.js 实现前端人脸检测功能
Apr 16 Javascript
JavaScript实现多文件下载方法解析
Aug 07 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中实现进程间通讯
2006/10/09 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
Prototype使用指南之enumerable.js
2007/01/10 Javascript
JSON JQUERY模板实现说明
2010/07/03 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
js实现网站最上边可关闭的浮动广告条代码
2015/09/04 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
JS 获取HTML标签内的子节点的方法
2016/09/21 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
Numpy中的mask的使用
2018/07/21 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
用canvas显示验证码的实现
2020/04/10 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
Expedia加拿大官方网站:加拿大最大的在线旅游提供商
2017/12/31 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
大学生创业计划书的范文
2014/01/07 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
《会走路的树》教后反思
2014/04/19 职场文书
校园环保标语
2014/06/13 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
小学数学教师研修日志
2015/11/13 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书