如何编写一个完整的Angular4 FormText 组件

本文主要介绍了如何编写一个完整的Angular4 FormText 组件,分享给大家,也给自己留个笔记

组件定义

rush:js;"> import { Component,Output,Input,forwardRef,EventEmitter} from '@angular/core'; import {ControlValueAccessor,NG_VALUE_ACCESSOR} from '@angular/forms';

@Component({
selector: 'form-text',template: `

`,providers: [ { provide:NG_VALUE_ACCESSOR,useExisting:forwardRef(()=>FormTextComponent),multi:true } ] }) export class FormTextComponent implements ControlValueAccessor {

@input() label:string = '';
@input() placeholder: string='';

@Output() onChange: EventEmitter = new EventEmitter();

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) {
//
}

}

组件使用

rush:xhtml;">

{{mobile}}

需要注意的点:

1.需要配置组件的providers 2.需要实现ControlValueAccessor接口

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...