如何编写一个完整的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 相关文章推荐
利用XMLHTTP传递参数在另一页面执行并刷新本页
Oct 26 Javascript
如何实现动态删除javascript函数
May 27 Javascript
js写的评论分页(还不错)
Dec 23 Javascript
js获取当前页面的url网址信息
Jun 12 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
Bootstrap CSS组件之按钮组(btn-group)
Dec 17 Javascript
Bootstrap.css与layDate日期选择样式起冲突的解决办法
Apr 07 Javascript
js 实现复选框只能选择一项的示例代码
Jan 23 Javascript
vue axios数据请求及vue中使用axios的方法
Sep 10 Javascript
jQuery实现的模仿雨滴下落动画效果
Dec 11 jQuery
JS基础之逻辑结构与循环操作示例
Jan 19 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 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
合作指挥官:孟斯克
2020/03/16 星际争霸
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
解析Ubuntu下crontab命令的用法
2013/06/24 PHP
php查找任何页面上的所有链接的方法
2013/12/03 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
2015/08/27 Javascript
Bootstrap基本插件学习笔记之按钮(21)
2016/12/08 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
js限制input只能输入有效的数字(第一个不能是小数点)
2018/09/28 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
python获取远程图片大小和尺寸的方法
2015/03/26 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
python实现淘宝秒杀脚本
2020/06/23 Python
Python Pandas数据中对时间的操作
2019/07/30 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
详解前端HTML5几种存储方式的总结
2016/12/27 HTML / CSS
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
百丽国际旗下购物网站:优购
2017/02/28 全球购物
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
回门宴父母答谢词
2014/01/26 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS