如何编写一个完整的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操作xml
Nov 04 Javascript
JS查看对象功能代码
Apr 25 Javascript
jquery 简短右键菜单 多浏览器兼容
Jan 01 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
利用HTML5的画布Canvas实现刮刮卡效果
Sep 06 Javascript
利用AngularJs实现京东首页轮播图效果
Sep 08 Javascript
JS实现下拉菜单列表与登录注册弹窗效果
Aug 10 Javascript
详解Vue webapp项目通过HBulider打包原生APP
Jun 29 Javascript
bootstrap与pagehelper实现分页效果
Dec 29 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
Apr 18 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
jquery实现垂直手风琴导航栏
Feb 18 jQuery
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语法(2)
2006/10/09 PHP
php中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
PHP使用array_merge重新排列数组下标的方法
2015/07/22 PHP
IIS 7.5 asp Session超时时间设置方法
2017/04/17 PHP
扩展Jquery插件处理mouseover时内部有子元素时发生样式闪烁
2011/12/08 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
NodeJS制作爬虫全过程
2014/12/22 NodeJs
原生js仿jquery实现对Ajax的封装
2016/10/04 Javascript
Vue.js 2.0中select级联下拉框实例
2017/03/06 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
ES6 如何改变JS内置行为的代理与反射
2019/02/11 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
React实现评论的添加和删除
2020/10/20 Javascript
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
python逆向入门教程
2018/01/15 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python-itchat 统计微信群、好友数量,及原始消息数据的实例
2019/02/21 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
keras实现VGG16 CIFAR10数据集方式
2020/07/07 Python
Python识别处理照片中的条形码
2020/11/16 Python
普通大学毕业生自荐信
2013/11/04 职场文书
大学生职业规划书的范本
2014/02/18 职场文书
市场推广策划方案
2014/06/02 职场文书
会计电算化专业求职信
2014/06/10 职场文书
公司员工安全协议书
2014/11/21 职场文书
学校办公室主任岗位职责
2015/04/01 职场文书
行政申诉状范文
2015/05/20 职场文书
法律服务所工作总结
2015/08/10 职场文书
上班旷工检讨书
2015/08/15 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
给numpy.array增加维度的超简单方法
2021/06/02 Python
一篇带你入门Java垃圾回收器
2021/06/16 Java/Android
Tomcat弱口令复现及利用
2022/05/06 Servers