如何编写一个完整的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 相关文章推荐
JavaScript表单常用验证集合
Jan 16 Javascript
Three.js源码阅读笔记(Object3D类)
Dec 27 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
Javascript实现单张图片浏览
Dec 18 Javascript
javascript实现时间格式输出FormatDate函数
Jan 13 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
JS异步加载的三种实现方式
Mar 16 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
详解Node.js项目APM监控之New Relic
May 12 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
Apr 14 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
Jun 05 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
php5.2.0内存管理改进
2007/01/22 PHP
PHP小教程之实现双向链表
2014/06/12 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
2014/06/23 PHP
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
页面版文本框智能提示JS代码
2009/11/20 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
JavaScript中的substr()方法使用详解
2015/06/06 Javascript
js实现获取当前时间是本月第几周的方法
2015/08/11 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
BootStrap Datetimepicker 汉化的实现代码
2017/02/10 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
node.js中grunt和gulp的区别详解
2017/07/17 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
2020/10/24 Javascript
python通过shutil实现快速文件复制的方法
2015/03/14 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
使用Django搭建web服务器的例子(最最正确的方式)
2019/08/29 Python
python super的使用方法及实例详解
2019/09/25 Python
python argparse传入布尔参数false不生效的解决
2020/04/20 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
UGG英国官方网站:UGG UK
2018/02/08 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
生物科学系大学生的自我评价
2013/12/20 职场文书
某同学的自我鉴定范文
2013/12/26 职场文书
大学生村官演讲稿
2014/04/25 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
写作之关于描写老人的好段摘抄
2019/11/14 职场文书
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers