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

angular基于ng-alain定義自己的select組件示例

 更新時(shí)間:2018年02月23日 16:08:01   作者:阿踏  
這篇文章主要介紹了angular基于ng-alain定義自己的select組件示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

1、首先是my-select2.component.html頁(yè)面,這里是在ng-alain的select基礎(chǔ)上根據(jù)業(yè)務(wù)需求添加新的功能;代碼如下:

<nz-select #select style="width:100%;" [(ngModel)]="selectedOption" [nzPlaceHolder]="myPlaceHolder" nzAllowClear [nzShowSearch]="true" [nzNotFoundContent]="'無(wú)匹配'">
  <nz-option
    *ngFor="let option of options"
    [nzLabel]="option.label"
    [nzValue]="option"
    [nzDisabled]="option.disabled">
  </nz-option>
</nz-select>

2、再者是my-select2.component.ts頁(yè)面,代碼里面有注釋;代碼如下:

import { ControlValueAccessor } from '@angular/forms/src/directives';
import { Component, forwardRef, Input,OnInit,ElementRef,Output,EventEmitter} from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { Router, NavigationEnd } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { SelectService } from './my-select2.service';
declare var $: any;
@Component({
 selector: 'nz-select2',
 templateUrl: './my-select2.component.html',
 providers: [ 
     {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => NzSelect2Component),//注入表單控件
      multi: true
     }]
})
export class NzSelect2Component implements OnInit{
  constructor(private selectService:SelectService) { 
  }
 innerValue: any = ''; 
 //監(jiān)聽綁定的值,與外岑的ngModel相互綁定
 set selectedOption(val:any){
   if (val !== this.innerValue) {
      this.innerValue = val;
      this.onChangeCallback(val.value);
      this.dataBack.emit(val.value); // 事件
    }
 }
 get selectedOption():any{
    return this.innerValue;
 }
 options = [];//接收select的數(shù)組
  _dataSource:any;//接收本地的自定義數(shù)組或者請(qǐng)求返回的數(shù)組
 @Input()
 url:any;//請(qǐng)求的url
 @Input()
 myPlaceHolder:any;//自定義的PlaceHolder
 @Input()
 //下拉框的數(shù)據(jù)格式
  fieldKey:any = {
    text: 'text',
     value: 'value'
  };
 @Input()
  set dataSource(val: any) {
    this._dataSource = val;
    if ($.isArray(this._dataSource)) {   
    this.options=this._dataTransform(this._dataSource);//如果是本地?cái)?shù)組或直接請(qǐng)求的數(shù)組直接復(fù)制
    }
  }
  get dataSource(): any {
    return this._dataSource;
  }
 @Output() dataBack = new EventEmitter<any>();
 registerOnChange(fn: (value: any) => void) { 
   this.onChangeCallback = fn;
 }
 registerOnTouched(fn: any) {
   this.onTouchedCallback = fn;
 }
  writeValue(value: string) {

  }
 onChangeCallback = (value: any) => {};
 onTouchedCallback = (value: any) => {};
 ngOnInit() {
     //如果url存在則直接請(qǐng)求
    if(this.url){
      this.selectService.getValue(this.url).subscribe(data => { 
        data = data.rows || data.data;    
        this.options=this._dataTransform(data);
      });
    }   
 }
 //轉(zhuǎn)換下拉框下的字段
  _dataTransform(data: Array<any>){
    let _data = [];
    for (let i = 0; i < data.length; i++) {
     _data[i] = {};
     _data[i].label = data[i][this.fieldKey.text];
     _data[i].value = data[i][this.fieldKey.value];
    }
    return _data;
 }
}

3、然后是my-select2.service.ts頁(yè)面,這里主要是請(qǐng)求后臺(tái)接口返回的下拉數(shù)組,url為父組件傳過來的鏈接,代碼如下:

import { Injectable } from '@angular/core';
import { Headers, Http, URLSearchParams,RequestOptions } from '@angular/http';
import { HttpClient, HttpErrorResponse } from '@angular/common/http';
import 'rxjs/add/operator/toPromise';
// import { environment } from '../../environments/environment';
@Injectable()
export class SelectService {
  constructor(private http: HttpClient) {}
  getValue(url: any):any{
    return this.http
      .get(url);
   
  }
}

4、然后是myselect.module.ts頁(yè)面,這里,使用該組件的前提是要引入 import { NzSelectModule } from 'ng-zorro-antd',代碼如下:

import { NgModule, ModuleWithProviders }    from '@angular/core';
import { CommonModule }  from '@angular/common';
import { FormsModule,ReactiveFormsModule } from '@angular/forms';
import { NzSelect2Component } from './my-select2.component';
import { SelectService } from './my-select2.service';
import { NzSelectModule } from 'ng-zorro-antd';
@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    NzSelectModule,
    ReactiveFormsModule
  ],
  exports:[
    NzSelect2Component
  ],
  declarations: [
    NzSelect2Component
  ],
  providers: [
     SelectService
  ]
}) 

export class MySelectModule {
  constructor() {

  }
}

5、使用方法,在你需要的模塊引入:MySelectModule

import { MySelectModule } from 'bizapp/base/components/myselect/myselect.module';

6、如何調(diào)用:url為請(qǐng)求后臺(tái)的接口,fieldKey為數(shù)組的格式,這里可以根據(jù)后臺(tái)返回來的格式定義這里的字段,如:后臺(tái)返回格式為[{dmsm1:5,dmz:5}]則fieldKey的定義如下,myPlaceHolder為初始化時(shí)顯示的內(nèi)容,如果是本地?cái)?shù)組,則只需要加上[dataSource]="peer",這里的peer為本地?cái)?shù)組

復(fù)制代碼 代碼如下:

<nz-select2  [url]="'analysis/api/data/code/list/030107'" [(ngModel)]="search2.hpzl" [fieldKey]="{text:'dmsm1',value:'dmz'}" [myPlaceHolder]="'號(hào)牌種類'"></nz-select2>

7、總結(jié):通過這個(gè)組件,我們只需要修改url和fieldKey就可以在任意模塊引入然后使用,減少代碼的使用,方便維護(hù)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn)

    Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn)

    這篇文章主要介紹了Angular實(shí)現(xiàn)svg和png圖片下載實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • AngularJS表格添加序號(hào)的方法

    AngularJS表格添加序號(hào)的方法

    這篇文章主要介紹了AngularJS表格添加序號(hào)的方法,涉及AngularJS表格的遍歷及序號(hào)添加實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • AngularJS學(xué)習(xí)筆記之基本指令(init、repeat)

    AngularJS學(xué)習(xí)筆記之基本指令(init、repeat)

    AngularJS 指令是擴(kuò)展的 HTML 屬性,帶有前綴 ng-。ng-app 指令初始化一個(gè) AngularJS 應(yīng)用程序。ng-init 指令初始化應(yīng)用程序數(shù)據(jù)。ng-model 指令把應(yīng)用程序數(shù)據(jù)綁定到 HTML 元素。
    2015-06-06
  • AngularJS 單元測(cè)試(二)詳解

    AngularJS 單元測(cè)試(二)詳解

    這篇文章主要介紹了AngularJS 單元測(cè)試(二)的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • AngularJS中使用ng-repeat的index問題

    AngularJS中使用ng-repeat的index問題

    這篇文章主要介紹了AngularJS中使用ng-repeat的index問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • AngularJs基于角色的前端訪問控制的實(shí)現(xiàn)

    AngularJs基于角色的前端訪問控制的實(shí)現(xiàn)

    本篇文章主要介紹了AngularJs實(shí)現(xiàn)基于角色的前端訪問控制,可以適用于不同的角色,有需要的可以了解一下。
    2016-11-11
  • Angular實(shí)現(xiàn)下拉框模糊查詢功能示例

    Angular實(shí)現(xiàn)下拉框模糊查詢功能示例

    這篇文章主要介紹了Angular實(shí)現(xiàn)下拉框模糊查詢功能,涉及AngularJS事件響應(yīng)及字符串查詢等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • 詳解Angularjs filter過濾器

    詳解Angularjs filter過濾器

    這篇文章主要介紹了angularjs filter過濾器的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • angular 服務(wù)隨記小結(jié)

    angular 服務(wù)隨記小結(jié)

    這篇文章主要介紹了angular 服務(wù)隨記小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • AngularJS教程 ng-style 指令簡(jiǎn)單示例

    AngularJS教程 ng-style 指令簡(jiǎn)單示例

    本文主要介紹AngularJS ng-style 指令,這里對(duì)ng-style 指令做了詳細(xì)的基礎(chǔ)資料整理,并附有代碼示例,有需要的朋友可以參考下
    2016-08-08

最新評(píng)論

邮箱| 邵东县| 宾川县| 中卫市| 平利县| 喀喇| 车险| 许昌市| 花莲市| 宜春市| 攀枝花市| 永春县| 嘉鱼县| 四会市| 施甸县| 宜兰市| 乳源| 华宁县| 西峡县| 永丰县| 怀宁县| 阿拉善盟| 泗阳县| 霍山县| 鲜城| 城步| 嘉祥县| 沁水县| 阆中市| 娄烦县| 三原县| 翁牛特旗| 军事| 三亚市| 黎川县| 汾西县| 屏山县| 江城| 公安县| 昌江| 苏尼特左旗|