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

站長資訊網
最全最豐富的資訊網站

淺析Angular中怎么結合使用FormArray和模態框

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

淺析Angular中怎么結合使用FormArray和模態框

業務場景

使用FormArray制作動態表單。每創建一個表單,頁面就新增一個input顯示表單填寫的標題,點擊編輯再跳轉到點擊表單的填寫內容。【相關教程推薦:《angular教程》】

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

表單列表

淺析Angular中怎么結合使用FormArray和模態框

表單詳情【模態框】

淺析Angular中怎么結合使用FormArray和模態框

<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>
登錄后復制

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

但是模態框新增的表單卻可以響應到頁面中去。

原錯誤代碼思路

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

  • 模態框點擊保存再將原FormArray的值重新替換

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


  • 點擊新增,創建一個新的FormGroup對象

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

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

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

淺析Angular中怎么結合使用FormArray和模態框

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

淺析Angular中怎么結合使用FormArray和模態框

所以正確的做法是啥??

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

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

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

總結

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

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产精品高潮呻吟爱久久AV无码| METART极品人体| 久久天天躁狠狠躁夜夜网站 | 东北往事之黑道风云20年第二部| 亚洲丰满少妇自摸| 女儿的朋友3完有限中字木瓜| 狠狠躁天天躁男人| ぱらだいす天堂中文WWW| 污到你下面流水的小黄文| 美女扒开屁股让男人桶GIF动态| 抱着边走边撞水流了一地的水| 色五月丁香五月综合五月4438| 国产一区二区无码蜜芽精品| 一本一道波多野结衣AV一区| 无码人妻熟妇AV又粗又大| 久久综合久久鬼色| 丰满少妇三级全黄| 又硬又大又长又粗又深| 日本精品一区二区三区在线视频| 国产爆乳成人AV在线播放| 亚洲综合色婷婷在线观看| 人妻少妇一区二区| 精品亚洲成在人线AV无码| 亚洲伊人久久精品影院| 特级欧美ZOOXX| 欧美三级在线播放| 娇妻当着我的面被4P| 被村长狂躁俩小时玉婷| 亚洲AV成人无码深夜高潮| 人妻熟妇乱又伦精品视频| 又大又黄又爽视频一区二区| 亚洲 精品 制服 校园 无码| 人妻少妇精品视频无码专区| 偷玩朋友熟睡人妻| 亚洲中文字幕久久精品无码APP| 91人人妻人人澡人人爽精品| 国产成人精欧美精品视频| 久久精品成人无码观看免费| 人妻一本久道久久综合久久鬼色 | 国产成人无码A区在线| 久久97超碰色中文字幕蜜芽| 全部免费特黄特色大片| 亚洲AV色香蕉一区二区蜜桃小说| 自拍偷自拍亚洲精品播放| 嗯~啊哈好深好骚啊哼| 久久99国产乱子伦精品免费| 日本丰满护士爆乳XXXX无遮挡| 亚洲AV综合色区无码二区爱AV| 99国精产品品质溯源网| 国产亚洲欧美日韩俺去了 | 在线日韩日本国产亚洲| 国产成人无码免费视频97APP| 老熟妇BBWASS| 无码人妻束缚av又粗又大| 18禁黄网站禁片免费观看国产| 国产韩国精品一区二区三区久久 | 菠萝蜜视频在线观看入口| 精品动漫一区二区无遮挡| 日本入室强伦姧BD在线观看| 亚洲区小说区图片区QVOD| 大J8黑人BBW巨大怪物| 旧里番6080在线观看| 太多了太满了肚子装不下了| 中文字幕精品第一区二区三区| 国产精品无码一区二区三级| 欧美XXXX做受欧美88BBW| 亚洲国产精品久久久天堂不卡海量| 被几个人摁住玩弄隐私作文| 久久精品人人做人人爽老司机| 熟妇熟女乱妇乱女网站| 最新国产AⅤ精品无码| 国模少妇一区二区三区| 日韩一区二区在线观看视频| 在公车被灌满JING液| 国产又粗又湿又刺激18禁| 人人妻人人做人人爽| 伊人久久精品久久亚洲一区| 国产偷国产偷亚洲清高APP| 欧美黑人又粗又大高潮喷水| 亚洲一卡一卡二新区无人区| 国产精品成人99久久久久| 人妻AV一区二区三区精品| 曰本女人牲交视频视频免费| 好大好厉害我接了一个顾客| 肉妇春潮干柴烈火MYFDUCC| 1000部啪啪未满十八勿入不卡| 精品国产VA久久久久久久冰| 无码精品、日韩专区| 差差差很疼视频30分钟无掩盖| 蜜臀av无码少妇一区二区三区| 亚洲成AⅤ人片在线观看天堂无码| 丰满圆润大胸在线| 欧美亚洲国产精品久久蜜芽直播| 亚洲伊人久久大香线蕉综合图片| 国产日产欧产精品精品| 少妇饥渴XXHD麻豆XXHD?| HENNESSY女RAPPER| 免费男同GAY片AV网站| 亚洲综合精品香蕉久久网| 国产午夜福利在线观看红一片| 色欲蜜臀AV在线播放| 被俩个黑人前后破苞的女人| 女儿的朋友6中汉字| 揄拍成人国产精品视频| 久久99国产精品久久99| 亚洲AV永久青草无码精品| 国产精品99久久精品爆乳| 色噜噜狠狠色综合AV妖精| 伴郎粗大的内捧猛烈进出视频观看| 免费无码又爽又刺激高潮| 永久免费的AV在线网无码| 久久久久精品国产亚洲AV电影| 亚洲国产精品特色大片观看完整版 | 一本一道色欲综合网中文字幕 | 人妻丰满熟妇AV无码处处不卡| 69无人区卡一卡二卡| 免费A级毛片无码A∨蜜芽| 曰韩一区二区三区视频| 久久人人爽爽爽人久久久| 亚洲中文字幕无码中文字在线| 精品国产成人A区在线观看| 亚洲国产精品VA在线看黑人 | 国产成人无码AV在线影院| 天天躁夜夜躁狠狠躁2020有剧| 国产AV妓女影视妓女影院 | 乖宝真紧H嘶爽老子H| 色欲蜜臀av无码久久浪潮一区| 东京热无码人妻系列综合网站| 色噜噜狠狠色综合成人网| 丰满人妻被快递员侵犯的电影| 少妇被躁爽到高潮无码| 炖肉计(是今)海棠| 天天摸天天透天天添| 国产精品久久久久久无遮挡| 无人区码一码二码三码网页| 国产又色又爽又刺激在线观看| 亚洲SSS整片AV在线播放| 娇妻系列交换27部多P小| 亚洲欧美国产精品久久| 久久久久久亚洲精品无码| 又大又粗又爽ΑA级毛片| 妺妺窝人体色www聚色窝仙踪 | 亚洲综合小说另类图片五月天| 久久亚洲精品无码| 52色擼99热99RE超碰| 欧洲亚洲国产成人综合色婷婷 | 日韩人妻无码精品无码中文字幕 | 久久精品人成免费| 在线观看无码AV网站永久 | JIZZJIZZ日本人妻| 日日摸夜夜添夜夜添无码免费视频| 粉嫩AV一区二区夜夜嗨| 西西GOGO大胆啪啪艺术| 寂寞夜晚看的MV字幕高清网站| 亚洲一本大道无码AV天堂| 妺妺窝人体色WWW聚色窝| 菠萝蜜视频APP在线观看| 无码成人免费AV片在线观看| 狠狠综合久久AV一区二区| 夜夜躁狠狠躁日日躁视频| 欧美国产亚洲日韩在线二区| 成人网站亚洲二区乱码| 西方44大但人文艺术是什么东西| 精品久久人人爽天天玩人人妻| 在线看片无码永久免费AV| 人妻少妇精品视频三区二区一区 | 无码中文人妻在线三区| 久99久精品免费视频热| 中文字幕一线产区和二线| 日韩精品无码综合福利网| 国产日产欧产精品精品APP| 亚洲伊人成无码综合网| 人人妻人人澡人人爽精品日本 | 亚洲 小说 欧美 激情 另类| 久久久国产精品VA麻豆| JAPANESEⅩⅩⅩHD69| 无码播放一区二区三区| 久久久精品人妻一区亚美研究所| FREESEX欧美喷水| 无码熟妇人妻AV在线影片最多| 久久久精品国产SM最大网站| MM131美女图片高清图片视频| 无码人妻久久一区二区三区 | 日产乱码一二三区别免费观看| 国产亲妺妺乱的性69视频播放| 一区无码在线观看的| 日韩午夜无码精品试看| 精品国产成人A区在线观看| HERMES日本官网的网址| 亚洲AV成人影视综合网| 女人的抉择全集免费播放| 国产极品粉嫩馒头一线天AV| 夜夜躁狠狠躁日日躁2022| 日韩欧美精品有码在线| 精品综合无码奶水一区二区| 凹凸在线无码免费视频| 亚洲国产精品久久无码中文字蜜桃 | 麻豆产精国品一二三产区区| 国产成人果冻星空传媒| 真实的国产乱ⅩXXX66小说|