成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

怎么結(jié)合使用FormArray和模態(tài)框?下面本篇文章給大家介紹一下Angular的FormArray和模態(tài)框結(jié)合使用的方法,希望對大家有所幫助!

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

業(yè)務(wù)場景

使用FormArray制作動態(tài)表單。每創(chuàng)建一個表單,頁面就新增一個input顯示表單填寫的標題,點擊編輯再跳轉(zhuǎn)到點擊表單的填寫內(nèi)容。【相關(guān)教程推薦:《angular教程》】

    // 封裝獲取modelList     get modelList() {         return this.formGroup.get('modelList') as FormArray     }     constructor(private fb: FormBuilder) {}     ngOnInit() {         // 一開始初始化arr為空數(shù)組         this.formGroup = this.fb.group({             // 內(nèi)部嵌套FormControl、FormArray、FormGroup             modelList: this.fb.array([])         })     }     // 模態(tài)框構(gòu)造內(nèi)部的表單     function newModel() {         return this.fb.group({             modelName: [''],             // 可以繼續(xù)嵌套下去,根據(jù)業(yè)務(wù)需求         })     }     // 省略模態(tài)框部分代碼     // 傳遞到模態(tài)框的FormArray     selectedType: FormArray
登錄后復(fù)制

表單列表

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

表單詳情【模態(tài)框】

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

<form [FormGroup]="formGroup">     <div FormArrayName="modelList">         <ng-container *nfFor="let item of modelList.controls;let i = index" [FormGroupName]="i">             <nz-input-group                 [nzSuffix]="suffixIconSearch"               >                 <input type="text" nz-input formControlName="modelName"/>               </nz-input-group>               <ng-template #suffixIconSearch>                 <span                   nz-icon                   nzType="edit"                   class="hover"                   (click)="showModal(i)"                 ></span>               </ng-template>         </ng-container>     </div> </form> <nz-modal   [(nzVisible)]="isVisible"   nzTitle="Model"   [nzFooter]="modalFooter"   (nzOnCancel)="handleCancel()"   (nzOnOk)="handleOk()" >   <ng-container *nzModalContent>     <form nz-form [formGroup]="selectedType">       <nz-form-item>         <nz-form-label nzRequired>Model Test</nz-form-label>         <nz-form-control>           <input             type="text"             nz-input             placeholder="請輸入ModelName"             formControlName="modelName"           />         </nz-form-control>       </nz-form-item>       <nz-form-item>         <nz-form-control>           <product-config></product-config>         </nz-form-control>       </nz-form-item>     </form>   </ng-container>   <ng-template #modalFooter>     <button *ngIf="!isNewModel" nzDanger nz-button nzType="default" (click)="handleDelete()">刪除</button>     <button *ngIf="isNewModel" nz-button nzType="default" (click)="handleCancel()">取消</button>     <button nz-button nzType="primary" (click)="handleOk()">保存</button>   </ng-template> </nz-modal>
登錄后復(fù)制

由于這種模態(tài)框比較特殊,割裂了表單的FormGroup之間的關(guān)系,在點擊的時候需要傳遞參數(shù)到模態(tài)框顯示部分值,如果單純傳遞參數(shù)使用this.modelList.at(index)獲取實體到模態(tài)框上進行賦值修改,在模態(tài)框點擊保存后會發(fā)現(xiàn)修改的值沒有在表單更新,而表單上對input值修改發(fā)現(xiàn)可以影響到模態(tài)框的內(nèi)容。

但是模態(tài)框新增的表單卻可以響應(yīng)到頁面中去。

原錯誤代碼思路

  • 點擊編輯后,將點擊的FormArray的元素傳遞給一個臨時變量 this.selectedType = <FormGroup>this.modelList.at(index);,并且對模態(tài)框表單傳值。

  • 模態(tài)框點擊保存再將原FormArray的值重新替換

this.modelList.removeAt(this.modelIndex) this.modelList.insert(this.modelIndex, this.selectedType)
登錄后復(fù)制


  • 點擊新增,創(chuàng)建一個新的FormGroup對象

  • 保存添加push到原頁面的FormArray中

newModelType(): FormGroup {     return this.fb.group({       modelName: ['', Validators.required],       configList: this.fb.array([]),     });   } // ...省略 // 模態(tài)框顯示 show() {     this.isVisible = true     this.selectedType = this.newModelType(); } // 保存 save() {     this.isVisible = false     // 原頁面FormArray     this.modelList.push(this.selectedType); }
登錄后復(fù)制

最后發(fā)現(xiàn)這種寫法只能夠單向改變,頁面外input修改值會影響到模態(tài)框,但是模態(tài)框的值改變保存卻讓外部沒有更新。通過console方式查看頁面的FormArray內(nèi)部參數(shù)發(fā)現(xiàn)其實是有改變的,只是angular沒有檢測到。這個時候判斷沒有發(fā)生響應(yīng)的原因一般是沒有觸發(fā)angular檢測機制,仔細查看文檔發(fā)現(xiàn)有一行很重要 angular文檔在最下面寫著

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

原本第一次閱讀的時候,覺得我遵守了這種原則,因為在編輯的時候,我選擇了操控原FormArray進行元素刪除和插入,是遵循了這種規(guī)則,但是實際上在模態(tài)框賦值就已經(jīng)違反了這種原則,我在賦值的時候拿了FormArray的元素實例賦值給模態(tài)框的臨時變量,然后更改實例的值,又重新刪除插入,本質(zhì)上我操作的是同一個實例,所以angular沒有檢測到發(fā)生變化【雖然值發(fā)生改變】

淺析Angular中怎么結(jié)合使用FormArray和模態(tài)框

所以正確的做法是啥??

在賦值的地方不能偷懶,仍然要重新創(chuàng)建新對象,再拿原對象的賦值。【相當于深拷貝】

      this.selectedType = this.newModelType();       const old = this.modelList.at(index);       this.selectedType.setValue({         'modelName': old.get('modelName').value     })
登錄后復(fù)制

這時候就可以正常更新了。

總結(jié)

其實查到最后本質(zhì)上還是回歸文檔。在排查錯誤也走了很多坑,而且國內(nèi)基本沒什么angular的文章,還得靠外網(wǎng)論壇去找問題。

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
日本国产一区二区三区在线观看| 日本熟妇色XXXXX日本免费看| 欧美黑人巨大最猛性XXXXX| 人妻尝试又大又粗久久| 色老板在线影院播放| 午夜天堂AV天堂久久久| 亚洲欧美在线综合色影视| 曰韩无码AV片免费播放不卡| AV无码中文字幕不卡一区二区三 | 一区二区AV在线| CHINESE FREE 高清| 非洲黑人妇女XXXXXHD| 国产男男GayGay裸交视频| 久久精品人人做人人综合试看| 男人J放进女人P全黄动态图| 6080YYY午夜理伦三级| 宝贝腿开大一点你真湿H| 国产AV一区二区三区日韩| 韩国18禁电影风暴尺度大| 丁香花在线影院观看在线播放| JAPANESEHD日本乱厨房| 大BBW大BBW大BBW| 含着奶头搓揉深深挺进| 蜜桃av秘 无码一区二区三区| 久久精品无码一区二区无码 | 九九久久精品国产| 欧美丰满性久久久久久久| 少妇高潮惨叫喷水正在播放| 亚洲AV永久无码精品水牛影视 | 亚洲国产精品无码中文字APP| 中文字幕人成无码人妻综合社区| 饭桌上故意张开腿让公在线观看| 金瓶梅之爱的奴隶| 欧亚精品卡一卡二卡三7174| 无人区一码二码三码区别在哪| 一区二区在线视频| 丰满少妇邻居找我泻火| 绯色AV一区二区三区3∪8| 精品国产成人国产在线观看| 欧美性猛交XXXX乱大交3| 午夜无码免费福利视频网址| 2021国产精品国产精华| 国产精品久久久久电影院| 美女扒开奶罩露出奶头视频网站 | 麻豆久久亚洲AV成人无码电影| 三个医生换着躁我一个| 色综合天天视频在线观看| 玩弄JAPAN白嫩少妇HD小说| 无码A级毛片免费视频内谢5J| 亚洲综合日韩久久成人AV| 丰满人妻跪趴高撅肥臀| 久久亚洲精品成人无码网站| 十八禁羞羞爽爽爽爱爱午夜网| 亚洲一区无码中文字幕| 国产97色在线 | 免| 馒头型B好还是蝴蝶型B| 午夜福利AV无码一区二区| 97人人模人人爽人人少妇| 国产在线无码免费网站永久| 人妻无码第一区二区三区| 亚洲人成线无码7777| 大香煮伊在2020一二三久| 久久综合狠狠综合久久综合88| 偷国产乱人伦偷精品视频| 99在线精品国自产拍| 抽搐一进一出再深一点| 久久亚洲日韩成人无码导航| 无码精品人妻一区二区| GOGO高清大胆全人艺术| 久久99国产精品片久久99蜜桃| 天美传媒MV在线播放高清视频| 中文字幕亚洲乱码熟女一区二区| 国产美女丝袜一级肛交蜜桃| 人人狠狠综合久久亚洲婷婷| 亚洲一区无码精品色| 国产免费不卡午夜福利在线| 日本成熟少妇喷浆在线观看| 在线播放无码高潮的视频| 国产亚洲精品美女久久久| 日韩乱码人妻无码中文视频| √天堂资源在线中文8在线最新版| 狠狠亚洲婷婷综合色香五月| 私人医生H1忘记密码了怎么办| 99精品国产高清一区二区| 精品深夜AV无码一区二区老年 | 无码AV在线一区二区| YY8090韩国理伦片在线| 久久综合亚洲欧美成人| 日韩乱码人妻无码中文字幕视频| √新版天堂资源在线资源| 精品综合无码奶水一区二区| 午夜福利一区二区三区在线观看 | 狠色狠色狠狠色综合久久| 婷婷综合缴情亚洲狠狠| 成人无码区免费AⅤ片WWW软件| 女人扒开屁股桶爽6O分钟| 野花视频在线观看| 精品国产乱码久久久软件下载| 无码熟妇人妻AⅤ在线影片| 丰满少妇高潮惨叫久久久| 日本丰满人妻HD浓毛| JAPANESEHD无码中文字| 妺妺窝人体色WWW在线下载| 天堂А√中文在线官网| 菠萝蜜视频网在线WWW| 欧美人与性囗牲恔配视频| 中文字幕一区二区人妻性色| 旧里番肉欲に堕ちた牝たち| 亚洲午夜无码久久久久| 精品国产_亚洲人成在线| 亚洲AV日韩AV无码A一区| 国产精品亚洲色婷婷99久久精品| 色偷偷色噜噜狠狠网站年轻人| 被滋润的少妇疯狂呻吟| 人妻少妇AV中文字幕乱码| 亚洲乱码尤物193YW最新网站| 国语对白做受XXXXX在| 无人区一码二码乱码区别在哪| 国产成人精品一区二三区在线观看| 狂野欧美激情性XXXX在线观看| 亚洲色丰满少妇高潮18P| 精品一区二区三区免费视频| 亚洲精品国产成人AV| 精品久久香蕉国产线看观看亚洲| 日韩一区二区三区精品| 粗大猛烈进出高潮视频大全| 日产无人区一线二线三线最新版| 宝贝乖女你的奶真大水真多| 日本黑人乱偷人妻中文字幕| 厨房里我扒了岳的内裤| 色一情一乱一乱一区91Av奶水| 父母全家儿女大联欢第14集| 天堂AV无码AV在线A√| 国产精品女上位好爽在线 | 国产精品午睡沙发系列| 午夜伦情电午夜伦情电影| 国产性自爱拍偷在在线播放| 亚洲AV综合久久九九| 九九电影网午夜理论片| 一边做饭一边暴躁怎么办| 免费 黄 色 人成 视频 在| 99久久国产综合精麻豆| 人人人妻人人澡人人爽欧美一区| 都市 亚洲 自拍 小说 校园| 玩弄人妻少妇老师美妇厨房| 国产在线乱子伦一区二区| 亚洲日韩乱码中文无码蜜桃| 麻豆精品久久久久久中文字幕无码 | 亚洲AV无码片VR一区二区三区| 九九电影网午夜理论片| 1—36集电视剧免费观看36集| 欧美人妻一区二区三区| 粉嫩泬一区二区三区| 性av 丰满av 无码av| 久久精品国产久精国产爱| 2018人人看人人爽| 日韩人妻一区二区三区免费 | 秋霞国产午夜伦午夜福利片 | 亚洲AV熟妇高潮18P| 久久九九日本韩国精品| 91人妻丰满熟妇Aⅴ无码| 久久久久女人精品毛片| 7777精品伊人久久久大香线蕉| 日本日本熟妇中文在线视频| 国产精品成人VA在线播放| 亚洲国产精品一区二区第一页| 麻豆星空精东天美MV| 吃了继兄给我开的药我做的梦| 亚洲A∨无码一区二区| 久久亚洲AV无码精品色午夜麻 | 人人爽人人爽人人爽人人片AV| 国产精品乱码高清在线观看| 亚洲一区二区三区在线网址| 欧美性极品少妇精品网站| 国产精品VA在线观看无码不卡| 亚洲欧洲日产国码无码久久99| 女厕脱裤撒尿大全视频| 7777色情XXXX欧美| 熟肉OVA初恋时间2附前作| 护士趴下光屁股翘臀被打的作文 | 欧美一区二区三区孕妇精品| 国产成人精品亚洲一区| 亚洲午夜无码毛片av| 人妻少妇乱子伦无码专区| 国产无遮挡又黄又爽高潮| 性欧美暴力猛交69HD| 可以差差差的视频无掩盖| 成人H视频在线观看| 亚洲VA久久久噜噜噜久久男同| 尿眼PEEHOLE重口| 国产成人综合久久精品推最新| 亚洲无人区一码二码三码区别| 国产精品51麻豆CM传媒| 疯狂做受XXXX高潮欧美日本| 亚洲JIZZJIZZ少妇| 欧美交性一级视频免费播放| 国产精品亚洲А∨无码播放不卡| 中文人妻熟妇乱又伦精品| 玩弄丰满熟妇乱XXXXX性多毛| 久久综合亚洲鲁鲁五月天|