首页 > 编程 > JavaScript > 正文

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

2019-11-19 14:54:46
字体:
来源:转载
供稿:网友

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表