如何编写一个完整的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 showModalDialog 多层模态窗口实现页面提交及刷新的代码
Nov 28 Javascript
ExtJs纵坐标值重复问题的解决方法
Feb 27 Javascript
Jquery数字上下滚动动态切换插件
Aug 08 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
Feb 12 Javascript
JS实现为排序好的字符串找出重复行的方法
Mar 02 Javascript
JavaScript数据类型转换的注意事项
Jul 31 Javascript
JavaScript日期对象(Date)基本用法示例
Jan 18 Javascript
利用Node.js编写跨平台的spawn语句详解
Feb 12 Javascript
利用js编写网页进度条效果
Oct 08 Javascript
Node.js操作系统OS模块用法分析
Jan 04 Javascript
jquery图片预览插件实现方法详解
Jul 18 jQuery
javascript之分片上传,断点续传的实际项目实现详解
Sep 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
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
php实现session共享的实例方法
2019/09/19 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
原生js和jquery实现图片轮播特效
2015/04/23 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JS中传递参数的几种不同方法比较
2017/01/20 Javascript
基于JavaScript实现瀑布流效果
2017/03/29 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
详解Vue中localstorage和sessionstorage的使用
2017/12/22 Javascript
node 文件上传接口的转发的实现
2019/09/23 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
js实现翻牌小游戏
2020/07/31 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
Python 文件处理注意事项总结
2017/04/10 Python
python中使用%与.format格式化文本方法解析
2017/12/27 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
python与js主要区别点总结
2020/09/13 Python
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
安全资金保障制度
2014/01/23 职场文书
打架检讨书300字
2014/02/02 职场文书
人事专员工作职责
2014/02/22 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
欢迎新生标语
2014/10/06 职场文书
优秀团队申报材料
2014/12/26 职场文书
小学生光盘行动倡议书
2015/04/28 职场文书
抢劫罪辩护词
2015/05/21 职场文书
浅谈由position属性引申的css进阶讨论
2021/05/25 HTML / CSS
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python
python高温预警数据获取实例
2022/07/23 Python