博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Angular] Create a ng-true-value and ng-false-value in Angular by controlValueAccessor
阅读量:5776 次
发布时间:2019-06-18

本文共 1692 字,大约阅读时间需要 5 分钟。

If you're coming from AngularJS (v1.x) you probably remember the ng-true-value and ng-false-value directive which allowed to map custom boolean values like "yes" or "no" or whatever other value you had, onto your HTML form. In this lesson we're going to implement our own trueFalseValue directive for Angular, by directly hooking into Angular's form API. A nice occasion to learn about the ControlValueAccessor interface.

 

import { Directive, Input, ElementRef, Renderer2, HostListener, forwardRef } from '@angular/core';import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';@Directive({  selector: 'input[type=checkbox][trueFalseValue]',  providers: [    {      provide: NG_VALUE_ACCESSOR,      useExisting: forwardRef(() => TrueFalseValueDirective),      multi: true    }  ]})export class TrueFalseValueDirective implements ControlValueAccessor {  @Input() trueValue = true;  @Input() falseValue = false;  private propagateChange = (_: any) => { };  constructor(private elementRef: ElementRef, private renderer: Renderer2) {  }  @HostListener('change', ['$event'])  onHostChange(ev) {    this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);  }  writeValue(obj: any): void {    // model -> view    if (obj === this.trueValue) {      // this.elementRef.nativeElement.checked = true;      this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);    } else {      this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);    }  }  registerOnChange(fn: any): void {    this.propagateChange = fn;  }  registerOnTouched(fn: any): void {  }  setDisabledState?(isDisabled: boolean): void {  }}

 

How to use:

 loving Angular?

 

转载地址:http://kueux.baihongyu.com/

你可能感兴趣的文章
ASP.NET 简单实现数字时钟
查看>>
response返回excel 文件名
查看>>
花指令学习
查看>>
如何突破职场瓶颈
查看>>
一个30岁男人的爱情婚姻思考
查看>>
PHP - 获取音频长度
查看>>
关于网易Ubuntu源的使用
查看>>
linux android sdk update
查看>>
Redis笔记3:Jedis连接自动释放
查看>>
cell侧滑显示多个按钮(Swift)
查看>>
simpleDateFormat线程不安全
查看>>
php一个命名空间的坑
查看>>
Mysql出现大量TIME_WAIT状态端口占用的解决方法 windows/linux/centos
查看>>
微信企业号登录授权Java实现获取员工userid根据userid换openid
查看>>
static_cast, dynamic_cast, const_cast探讨
查看>>
sql筛选出每一人的时间最新的一条记录
查看>>
sql ,hql 使用 or 注意使用()
查看>>
今天发现一个 动态dns工具
查看>>
网上找的TCP连接示意图...
查看>>
Bootstrap3学习笔记:辅助样式
查看>>