如何编写一个完整的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 相关文章推荐
使用jQuery轻松实现Ajax的实例代码
Aug 16 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
Aug 11 Javascript
javascript瀑布流式图片懒加载实例解析与优化
Feb 23 Javascript
老生常谈JavaScript 函数表达式
Sep 01 Javascript
浅析$(function) ready和onload 的区别
Sep 03 Javascript
js防阻塞加载的实现方法
Sep 09 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
Nov 05 Javascript
jQuery设置Easyui校验规则(推荐)
Nov 21 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 Javascript
JS验证不重复验证码
Feb 10 Javascript
JS滚动到指定位置导航栏固定顶部
Jul 03 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 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头像上传预览实例代码
2017/05/02 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
PHP基于自定义函数生成笛卡尔积的方法示例
2017/09/30 PHP
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery中prepend()方法用法实例
2014/12/25 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别
2015/11/13 Javascript
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
Vue+elementui 实现复杂表头和动态增加列的二维表格功能
2019/09/23 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
小程序实现背景音乐播放和暂停
2020/06/19 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
[01:12:53]完美世界DOTA2联赛PWL S2 Forest vs SZ 第一场 11.25
2020/11/26 DOTA
Python使用turtule画五角星的方法
2015/07/09 Python
理解Python垃圾回收机制
2016/02/12 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python闭包思想与用法浅析
2018/12/27 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
财务会计专业毕业生自荐信
2013/10/19 职场文书
和平主题的演讲稿
2014/01/12 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
家长对孩子的感言
2014/03/10 职场文书
2014幼儿园卫生保健工作总结
2014/12/05 职场文书
大班下学期个人总结
2015/02/13 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
PHP中->和=>的意思
2021/03/31 PHP
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android