Angular重構(gòu)數(shù)組字段的解決方法示例
問題
有些數(shù)據(jù)過多的下拉框數(shù)組沒法靜態(tài)定義,只能通過API獲取,但API給出的數(shù)組字段各式各樣,而我彈窗中的下拉框?qū)?shù)組的字段卻是固定的,例如:
API給的數(shù)據(jù)結(jié)構(gòu)是:
{ id:'', text:'' }
而我彈窗所需要的固定數(shù)據(jù)結(jié)構(gòu)為:
{ type:'', value:'' }
調(diào)用的代碼為:
<mat-select *ngSwitchCase="'select'" [formControlName]="form.value" [required]="form.required"> <mat-option *ngFor="let opt of form.selectArr" [value]="opt.value"> {{ opt.label ? opt.label : opt.type }} </mat-option> </mat-select>
也就是說,我需要將數(shù)組中所有的id修改為value,text修改為type
解決辦法
解決思路:我不打算直接去修改原來的數(shù)組字段,而采用push的方式。
也就是我設(shè)置一個(gè)空數(shù)組,利用一個(gè)foreach
循環(huán),使其type=text,value=id,將原來的數(shù)據(jù)一個(gè)一個(gè)push進(jìn)這個(gè)空數(shù)組,最后循環(huán)結(jié)束得到的就是我想要的數(shù)組了。
sProductCat1List: any[] = [{ type: '', value: '' }]; // 定義數(shù)組 this.supplierService.getsProductCat1().subscribe(res => { const List = res['data'] || []; // 第一步 let i = 0; // 第二步 List.forEach(index => { // 第三步 this.sProductCat1List[i].type = index.text; this.sProductCat1List[i].value = index.id; i++; this.sProductCat1List.push({ type: '', value: '' }); }); });
this.supplierService.getsProductCat1()
為獲取API數(shù)組的函數(shù),在此不多做解釋。
定義數(shù)組:之所以沒有設(shè)置為any[] = []
,是因?yàn)榭諗?shù)組無法push進(jìn){ type: '', value: '' }
第一步:設(shè)置一個(gè)常量數(shù)組,用于獲取API的原數(shù)組 第二步:設(shè)置循環(huán)數(shù)字(好像也可以不設(shè)置,主要是用來檢測) 第三步:注意,因?yàn)槎x的數(shù)組{ type: '', value: '' }
,所以需要先傳值,再push,如果你需要一個(gè){ type: '', value: '' }
用來作為“不選中”,則可以先push再傳值。
以上就是Angular重構(gòu)數(shù)組字段的解決方法示例的詳細(xì)內(nèi)容,更多關(guān)于Angular重構(gòu)數(shù)組字段的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在 Angular 中使用Chart.js 和 ng2-charts的示例代碼
本篇文章主要介紹了在 Angular 中使用Chart.js 和 ng2-charts的示例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08angularjs的select使用及默認(rèn)選中設(shè)置
本篇文章主要介紹了angularjs的select使用及默認(rèn)選中設(shè)置,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-04-04AngularJS實(shí)現(xiàn)標(biāo)簽頁的兩種方式
這篇文章分別給大家介紹了AngularJS實(shí)現(xiàn)標(biāo)簽頁的兩種方式,一種是通過普通指令實(shí)現(xiàn)標(biāo)簽頁,另外一種是通過自定義指令實(shí)現(xiàn)的標(biāo)簽頁,有需要的朋友們可以來參考借鑒,下面來一起看看吧。2016-09-09angularJs-$http實(shí)現(xiàn)百度搜索時(shí)的動(dòng)態(tài)下拉框示例
下面小編就為大家分享一篇angularJs-$http實(shí)現(xiàn)百度搜索時(shí)的動(dòng)態(tài)下拉框示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-02-02AngularJS報(bào)錯(cuò)$apply already in progress的解決方法分析
這篇文章主要介紹了AngularJS報(bào)錯(cuò)$apply already in progress的解決方法,較為詳細(xì)的分析了報(bào)錯(cuò)$apply already in progress的原理、處理技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-01-01angularjs實(shí)現(xiàn)過濾并替換關(guān)鍵字小功能
這篇文章主要為大家詳細(xì)介紹了angularjs實(shí)現(xiàn)過濾并替換關(guān)鍵字小功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09ng-events類似ionic中Events的angular全局事件
這篇文章主要介紹了ng-events類似ionic中Events的angular全局事件,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09