欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-20 22:01:25
本文主要介绍了如何编写一个完整的angular4 formtext 组件,分享给大家,也给自己留个笔记 组件定义 import { component, o...

本文主要介绍了如何编写一个完整的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接口

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