亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用Angular7開發一個Radio組件的全過程

2019-11-19 11:11:44
字體:
來源:轉載
供稿:網友

一、準備工作

Angular7(以下簡稱ng7),已經跟之前版本大有不同。新建工程后,可方便創建library(簡稱lib),lib是什么呢?就是一個npm包的源碼包。npm作為強大的包管理器,已經成為很多FEer分享智慧成果的法器。本文主要介紹本人寫的一個radio組件。

二、開發組件radio過程

1、使用ng cli,新建工程,創建lib

// 安裝ng clinpm install -g @angular/cli// 新建工程ng new ng-project// 進入ng-project 創建一個libng generate library radio

2、生成結構如圖所示 接下來開始寫組件

3、radio結構如下

<!--說明:這其實是一個radio-group 因為radio一般都是分組使用,這里有幾個注意點

1、組內radio的name屬性保持一致、組外保持唯一

2、通過checked屬性來設置radio的選中狀態,一定不要寫成[attr.checked]-->

<div class="input-wrap" [class.hor]="horizontal">  <div class="custom-radio" *ngFor="let item of data; let i=index">    <input #input class="custom-input" [name]="name" id="{{'radio_'+name+i}}" type="radio"    [value]="item.value" (click)="clickHandler(item.value)" [checked]="item.value === value"     [disabled]="disabled">    <label class="custom-label" for="{{'radio_'+name+i}}">{{item.name}}</label>  </div></div>

4、radio組件主體代碼如下

export class RadioGroupComponent implements ControlValueAccessor {  /* radio 數組 */  @Input()  data: Radio[] = [];  /* radio 類型  原生或者按鈕類型*/  @Input()  type: string;  /* name標識 */  @Input()  name: string = this.idSer.generate().replace(/-/g, '_');  /* 水平排列 */  @Input()  horizontal: boolean;  /* 禁用 */  @Input()  disabled: boolean;  /* radio 值 */  @Input() value: any;  constructor(private idSer: IdService) {  }  clickHandler(val: any) {    this.value = val;    // 更改control的值    this.controlChange(this.value);    this.controlTouch(this.value);  }  writeValue(value: any): void {    this.value = value;  }  registerOnChange(fn: Function): void {    this.controlChange = fn  }  registerOnTouched(fn: Function): void {    this.controlTouch = fn  }  private controlChange: Function = () => { }  private controlTouch: Function = () => { }}

說明:其實組件代碼不是很多,但是應該注意到,我們繼承了ng的一個interface ControlValueAccessor,這里我覺的是比較值得侃的地方。這是ng的一個forms API,可以方便原生DOM和ng forms傳值。在組件元數據中這樣定義

@Component({  selector: 'radiogroup',  templateUrl: './radiogroup.component.html',  providers: [{    provide: NG_VALUE_ACCESSOR,    useExisting: forwardRef(() => RadioGroupComponent),    multi: true,  }]})

其中,這里面有兩個重要的方法需要overwrite,不錯,就是registerOnChange和registerOnTouched,這兩個方法在angular中是這樣定義和使用的


他們分別是在formcontrol的updateOn(這個屬性可以自定義)屬性值為change或者blur的時候調用。因此,我們在重寫這兩個方法的時候應該注意,是重寫一個還是都要重寫。本組件兩個方法都重寫了,因為值變更的時機自定義成了blur。

三、這就是我的關于radio組件的封裝開發,還請各位大牛朋友們多多指點,后續會繼續推出關于Angular的開發以及研究。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美成人午夜影院| 日韩精品有码在线观看| 亚洲视频在线观看| 久久久精品欧美| 欧美www视频在线观看| 亚洲a∨日韩av高清在线观看| 亚洲一区二区三区乱码aⅴ| 永久555www成人免费| 亚洲欧美日韩精品久久亚洲区| 日韩在线欧美在线| 亚洲精品成人网| 国产精品吹潮在线观看| 欧美亚洲激情视频| 午夜精品一区二区三区视频免费看| 91精品视频免费看| 久久久久久国产精品| 久久综合伊人77777尤物| 国产成人aa精品一区在线播放| 久久综合色88| 九九精品在线播放| 国产99视频精品免视看7| 欧美激情亚洲一区| 欧美日韩一区二区免费视频| 美日韩精品免费观看视频| 亚洲欧美另类国产| 中文字幕v亚洲ⅴv天堂| 日韩国产激情在线| 日韩美女视频免费在线观看| 亚洲高清久久网| 欧美在线观看网址综合| 欧美日韩国产中文字幕| 亚洲激情在线观看| 日韩激情第一页| 久久久久久国产精品美女| 久久久噜噜噜久久| 亚洲国产97在线精品一区| 欧美特级www| 亚洲国产精品va在线| 中文字幕欧美日韩| 韩国三级日本三级少妇99| 国产精品久久久久久婷婷天堂| 欧美精品免费在线观看| 久久九九国产精品怡红院| 久久亚洲精品网站| 亚洲综合中文字幕在线| xxxx欧美18另类的高清| 亚洲精品成人久久电影| 日韩专区在线播放| 日韩小视频在线| 国产精品久久久久久久久免费| 欧美乱大交做爰xxxⅹ性3| 性欧美办公室18xxxxhd| 欧美日韩国产一区在线| 久久这里有精品视频| 成人国产精品久久久久久亚洲| 国产精品国产自产拍高清av水多| 欧美成年人视频网站欧美| 国产精品999999| 久久精品中文字幕| 懂色av影视一区二区三区| 亚洲国产精品女人久久久| 久久国产精品久久精品| 精品在线欧美视频| 粉嫩av一区二区三区免费野| 国产精品成av人在线视午夜片| 亚洲人成在线一二| 久久精品视频免费播放| 欧美电影免费观看大全| 日韩电影大全免费观看2023年上| 亚洲男人第一网站| 欧美日韩性视频在线| 亚洲欧洲视频在线| 57pao精品| 亚洲国产日韩欧美综合久久| 国产精品久久激情| 亚洲欧美日韩精品久久| 高清一区二区三区四区五区| 久久久精品在线观看| 国产亚洲精品久久久| 亚洲人成网站免费播放| 精品亚洲男同gayvideo网站| 国产精品久久久久久婷婷天堂| 中文字幕在线成人| 中文字幕亚洲无线码在线一区| 中文字幕一区二区三区电影| 国产成人精品综合| 最近2019中文字幕在线高清| 久久久久久久久久久国产| 日本一区二区不卡| 欧美黑人性生活视频| 日韩综合中文字幕| 亚洲精品二三区| 精品中文视频在线| 亚洲一区二区三| 57pao国产成人免费| 日韩欧美中文字幕在线播放| 欧美国产在线电影| 国产精品视频一区二区三区四| 国产视频一区在线| 上原亚衣av一区二区三区| 97国产精品人人爽人人做| 亚洲国产精品视频在线观看| 日韩在线精品视频| 亚洲丁香久久久| 亚洲色图欧美制服丝袜另类第一页| 亚洲人精选亚洲人成在线| 色综合久综合久久综合久鬼88| 中文字幕视频在线免费欧美日韩综合在线看| 亚洲第一免费播放区| 欧美丰满老妇厨房牲生活| 欧美在线性视频| 精品亚洲男同gayvideo网站| www.精品av.com| 亚洲精品日韩丝袜精品| 欧美日本高清一区| 欧美一级电影在线| 两个人的视频www国产精品| 日韩视频在线一区| 欧美美女15p| 欧美日韩国产在线看| 97碰碰碰免费色视频| 国产一区二区美女视频| www.久久草.com| 国产99视频在线观看| 97色在线视频| 中文字幕欧美日韩在线| 日本aⅴ大伊香蕉精品视频| 亚洲人成电影网站色| 韩国19禁主播vip福利视频| 欧美日韩亚洲一区二| 国产欧亚日韩视频| 国产99久久精品一区二区| 欧美福利视频在线观看| 欧美极品少妇xxxxⅹ免费视频| 懂色aⅴ精品一区二区三区蜜月| 欧美www视频在线观看| 午夜精品一区二区三区在线播放| 精品色蜜蜜精品视频在线观看| 久久av在线播放| 日韩免费观看高清| 九九热99久久久国产盗摄| 精品国产欧美成人夜夜嗨| 亚洲精品美女久久久久| 97精品国产aⅴ7777| 欧美男插女视频| 久久最新资源网| 欧美日韩中文字幕在线| 欧美疯狂xxxx大交乱88av| 亚洲精品在线91| 亚洲乱码一区av黑人高潮| 亚洲欧美精品一区| 91大神在线播放精品| 亚洲男人av电影| 亚洲精品久久在线| 久久亚洲私人国产精品va| 91久久久久久久| 国产精品三级在线| 欧美丝袜一区二区三区| 精品国产拍在线观看| 国产成人精品a视频一区www| 国产欧美日韩综合精品| 91香蕉电影院| 亚洲自拍高清视频网站| 亚洲欧洲激情在线|