如何编写一个完整的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 相关文章推荐
js 函数的执行环境和作用域链的深入解析
Nov 01 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
5分钟理解JavaScript中this用法分享
Nov 09 Javascript
js与jquery获取父级元素,子级元素,兄弟元素的实现方法
Jan 09 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
不得不分享的JavaScript常用方法函数集(上)
Dec 23 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
Jan 04 Javascript
JavaScript用200行代码制作打飞机小游戏实例
Jun 21 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
解决一个微信号同时支持多个环境网页授权问题
Aug 07 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 归并排序 数组交集
2011/05/10 PHP
利用PHP扩展Xhprof分析项目性能实践教程
2018/09/05 PHP
jQuery选择没有colspan属性的td的代码
2010/07/06 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
浅谈js中的闭包
2015/03/16 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
异步加载JS、CSS代码(推荐)
2016/06/15 Javascript
Spring MVC中Ajax实现二级联动的简单实例
2016/07/06 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
详解AngularJS controller调用factory
2017/05/19 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
2018/07/13 Javascript
JavaScript学习笔记之基于定时器实现图片无缝滚动功能详解
2019/01/09 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python的socket编程入门
2018/01/29 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
python3注册全局热键的实现
2020/03/22 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
Java面试题:为什么要用Java
2012/05/11 面试题
少先队入队活动方案
2014/02/08 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
2014年护理部工作总结
2014/11/14 职场文书
爱国电影观后感
2015/06/19 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
Mysql排序的特性详情
2021/11/01 MySQL
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android