最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Angular7開發(fā)一個(gè)Radio組件的全過程

 更新時(shí)間:2019年07月11日 14:17:31   作者:國之大殤  
這篇文章主要給大家介紹了關(guān)于如何利用Angular7開發(fā)一個(gè)Radio組件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Angular7具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

一、準(zhǔn)備工作

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

二、開發(fā)組件radio過程

1、使用ng cli,新建工程,創(chuàng)建lib

// 安裝ng cli
npm install -g @angular/cli
// 新建工程
ng new ng-project
// 進(jìn)入ng-project 創(chuàng)建一個(gè)lib
ng generate library radio

2、生成結(jié)構(gòu)如圖所示 接下來開始寫組件

3、radio結(jié)構(gòu)如下

<!--說明:這其實(shí)是一個(gè)radio-group 因?yàn)閞adio一般都是分組使用,這里有幾個(gè)注意點(diǎn)

1、組內(nèi)radio的name屬性保持一致、組外保持唯一

2、通過checked屬性來設(shè)置radio的選中狀態(tài),一定不要寫成[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 數(shù)組 */
  @Input()
  data: Radio[] = [];

  /* radio 類型  原生或者按鈕類型*/
  @Input()
  type: string;

  /* name標(biāo)識 */
  @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 = () => { }

}

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

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

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


他們分別是在formcontrol的updateOn(這個(gè)屬性可以自定義)屬性值為change或者blur的時(shí)候調(diào)用。因此,我們在重寫這兩個(gè)方法的時(shí)候應(yīng)該注意,是重寫一個(gè)還是都要重寫。本組件兩個(gè)方法都重寫了,因?yàn)橹底兏臅r(shí)機(jī)自定義成了blur。

三、這就是我的關(guān)于radio組件的封裝開發(fā),還請各位大牛朋友們多多指點(diǎn),后續(xù)會(huì)繼續(xù)推出關(guān)于Angular的開發(fā)以及研究。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Angular2實(shí)現(xiàn)自定義雙向綁定屬性

    Angular2實(shí)現(xiàn)自定義雙向綁定屬性

    本篇文章主要介紹了Angular 2實(shí)現(xiàn)自定義 雙向綁定 屬性,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • angular 數(shù)據(jù)綁定之[]和{{}}的區(qū)別

    angular 數(shù)據(jù)綁定之[]和{{}}的區(qū)別

    這篇文章主要介紹了angular 數(shù)據(jù)綁定之[]和{{}}的區(qū)別,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09
  • angularjs 指令實(shí)現(xiàn)自定義滾動(dòng)條效果

    angularjs 指令實(shí)現(xiàn)自定義滾動(dòng)條效果

    橫向商品欄,把原有的滾動(dòng)條改成自定義的樣式,并且給兩邊加上箭頭可以調(diào)整,可以拖動(dòng)商品和滾輪實(shí)現(xiàn)滾動(dòng)條效果,這篇文章主要介紹了angularjs 指令實(shí)現(xiàn)自定義滾動(dòng)條效果,需要的朋友可以參考下
    2024-03-03
  • 詳解Angular2 關(guān)于*ngFor 嵌套循環(huán)

    詳解Angular2 關(guān)于*ngFor 嵌套循環(huán)

    這篇文章主要介紹了詳解Angular2 關(guān)于*ngFor 嵌套循環(huán),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Angular中AuthGuard路由守衛(wèi)的創(chuàng)建使用

    Angular中AuthGuard路由守衛(wèi)的創(chuàng)建使用

    這篇文章主要為大家介紹了Angular中AuthGuard路由守衛(wèi)的創(chuàng)建使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • Ionic + Angular.js實(shí)現(xiàn)圖片輪播的方法示例

    Ionic + Angular.js實(shí)現(xiàn)圖片輪播的方法示例

    圖片輪播在我們?nèi)粘i_發(fā)中是再熟悉不過的了,下面這篇文章主要給大家介紹了Ionic + Angular實(shí)現(xiàn)圖片輪播的方法,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),需要的朋友們下面來一起看看吧。
    2017-05-05
  • 用Angular實(shí)現(xiàn)一個(gè)掃雷的游戲示例

    用Angular實(shí)現(xiàn)一個(gè)掃雷的游戲示例

    這篇文章主要介紹了用Angular實(shí)現(xiàn)一個(gè)掃雷的游戲示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 在AngularJS框架中處理數(shù)據(jù)建模的方式解析

    在AngularJS框架中處理數(shù)據(jù)建模的方式解析

    這篇文章主要介紹了在AngularJS框架中處理數(shù)據(jù)建模的方式,作者同時(shí)也對AngularJS使用過程中的一些"坑"作了介紹,需要的朋友可以參考下
    2016-03-03
  • angular6的響應(yīng)式表單的實(shí)現(xiàn)

    angular6的響應(yīng)式表單的實(shí)現(xiàn)

    這篇文章主要介紹了angular6的響應(yīng)式表單的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-10-10
  • Angular2入門教程之模塊和組件詳解

    Angular2入門教程之模塊和組件詳解

    這篇文章主要給大家介紹了Angular2入門教程之模塊和組件的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-05-05

最新評論

交口县| 资兴市| 安阳市| 彭州市| 清流县| 虞城县| 白山市| 桃源县| 玉溪市| 达拉特旗| 古浪县| 蚌埠市| 天门市| 澄迈县| 陆良县| 湖南省| 铁力市| 沈阳市| 元阳县| 乡宁县| 盐城市| 焦作市| 灵寿县| 拜泉县| 新巴尔虎左旗| 通山县| 盐池县| 白沙| 咸阳市| 湟源县| 勐海县| 客服| 怀柔区| 四川省| 凤阳县| 集安市| 北川| 新闻| 荆门市| 米脂县| 永泰县|