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

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

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

一、準備工作

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

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

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

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

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

3、radio結構如下

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

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

2、通過checked屬性來設置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標識 */
  @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傳值。在組件元數(shù)據(jù)中這樣定義

@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組件的封裝開發(fā),還請各位大牛朋友們多多指點,后續(xù)會繼續(xù)推出關于Angular的開發(fā)以及研究。

總結

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

相關文章

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

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

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

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

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

    angularjs 指令實現(xiàn)自定義滾動條效果

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

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

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

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

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

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

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

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

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

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

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

    angular6的響應式表單的實現(xiàn)

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

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

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

最新評論

石家庄市| 潼南县| 夏津县| 天镇县| 通山县| 商洛市| 新余市| 保靖县| 临高县| 华蓥市| 连平县| 蒙阴县| 广水市| 罗城| 丽江市| 新野县| 乐安县| 保靖县| 泗阳县| 丽江市| 辽宁省| 漳州市| 香港| 定安县| 合阳县| 原平市| 莒南县| 定兴县| 北辰区| 哈尔滨市| 湖南省| 巴中市| 余姚市| 长岛县| 广州市| 开阳县| 三江| 辉县市| 盐城市| 濉溪县| 招远市|