久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

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

淺析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號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
性欧美精品高清| 亚洲一区激情| 日韩黄色av| 麻豆精品少妇| 伊人精品一区| 国产亚洲精品v| 国产精品午夜一区二区三区| 97国产成人高清在线观看| 日本a口亚洲| 日韩在线看片| 91p九色成人| 欧洲av一区二区| 视频在线观看一区| 亚洲我射av| 中文字幕人成乱码在线观看| 亚洲综合二区| 精品国产a一区二区三区v免费| 国产国产精品| 国模大尺度视频一区二区| 国产精品试看| 国产在线观看www| 国产一区二区精品久| 美女日韩在线中文字幕| 97精品国产一区二区三区| 国产毛片久久| 日韩国产欧美一区二区三区| 色一区二区三区| 日韩高清在线不卡| 国产日韩一区| 自拍日韩欧美| 精品国产一区二| 日本大胆欧美人术艺术动态| 日本精品久久| 免费av一区| 欧美激情五月| 9色国产精品| 国产成人免费精品| 欧美日韩网址| 蜜臀久久99精品久久一区二区| 精品欧美视频| 日韩精品视频在线看| 欧美不卡高清| 色网在线免费观看| 美女网站久久| 亚洲欧美成人综合| av中文字幕在线观看第一页| 九一精品国产| 欧美一区二区三区高清视频| 国产不卡人人| 国产精品极品国产中出| 中文视频一区| 欧美国产日本| 日韩成人一级| 免费在线欧美视频| 精品久久影院| 久久精品免费一区二区三区 | 日韩国产一区二区三区| 欧美一区二区三区久久精品| 亚洲高清久久| 日本色综合中文字幕| 一区在线视频观看| 国产精品丝袜在线播放| 亚洲综合激情在线| 99亚洲视频| 亚洲成人国产| 91精品婷婷色在线观看| 综合日韩av| 日本精品不卡| 免费看的黄色欧美网站| 激情综合网站| 国产欧美日韩影院| 亚洲少妇一区| 日韩午夜一区| 狠狠干成人综合网| 免费日韩av片| 亚洲一区二区小说| 亚洲一级特黄| 久久亚洲二区| 香蕉视频成人在线观看| 成人羞羞在线观看网站| 亚洲天堂一区二区| 欧美精品一线| 亚洲精品视频一二三区| 91免费精品| 尹人成人综合网| 免费欧美在线视频| 久久av免费| 日韩av三区| 国内精品亚洲| 欧美搞黄网站| 激情久久五月| 日韩视频一二区| 国产精品一区二区三区四区在线观看| 丝袜美腿一区二区三区| 亚洲色图综合| 国产亚洲精品美女久久| 亚洲综合另类| 国产欧美日韩一级| 欧美国产美女| 91视频一区| 亚洲一区二区三区四区五区午夜| 亚洲午夜精品久久久久久app| 视频一区中文| 亚洲激情久久| 97精品久久| 亚洲精品观看| 精品久久一区| 久久久久免费av| 午夜在线一区| 精品国产乱码久久久久久1区2匹| av免费不卡国产观看| 日韩中文字幕高清在线观看| 国产高清视频一区二区| 欧美日韩色图| 国产亚洲欧美日韩精品一区二区三区| 国产超碰精品| 中文亚洲免费| 久久久国产精品网站| 自拍日韩欧美| 久久亚洲精品中文字幕蜜潮电影| 欧美一级一区| 亚洲自啪免费| 婷婷精品在线| 国产精品99免费看| 国产美女久久| 不卡中文一二三区| 日韩a一区二区| 亚洲影视一区| 亚洲成人不卡| 综合激情五月婷婷| 天堂av在线| 欧美亚洲国产精品久久| 国产乱码午夜在线视频| 日本久久成人网| 日韩国产在线观看一区| 亚洲精品电影| 亚洲一区二区三区久久久| 亚洲日本在线观看视频| 福利精品在线| 国产精品蜜月aⅴ在线| 亚洲欧美日韩国产一区| 成人精品动漫一区二区三区| 亚洲欧美一区在线| 日韩88av| 国产精品一区二区三区四区在线观看| 久久影视一区| 国产毛片久久| 久久九九精品| 麻豆国产欧美一区二区三区| 午夜性色一区二区三区免费视频| 国产日本精品| 亚洲黄页一区| 国产aa精品| 亚洲欧洲日韩| 2023国产精品久久久精品双| 特黄毛片在线观看| 国产精品啊v在线| 欧美不卡在线| 欧美福利专区| 免费观看在线色综合| 亚洲v天堂v手机在线| 国产一区二区三区四区五区传媒| 国产尤物精品| 麻豆精品在线播放| 日韩在线视频一区二区三区| 精品九九久久| 国产探花一区| 欧美13videosex性极品| 亚洲精品激情| 女主播福利一区| 精品一区二区三区在线观看视频| 国产另类在线| 日韩欧美美女在线观看| 亚洲中午字幕| 视频小说一区二区| 91中文字幕精品永久在线| 亚洲69av| 一区二区亚洲视频| 9999国产精品| 国产成人免费精品| 鲁鲁在线中文| 国产精品www.| 欧美日韩视频| 99在线精品免费视频九九视| 99久久夜色精品国产亚洲1000部| 日韩不卡免费视频| 麻豆国产欧美一区二区三区 | 免费在线观看视频一区| 天堂а√在线最新版中文在线| 麻豆一区二区三区| 久久久久久久久丰满| 九九久久国产| 丁香婷婷久久| 欧美一区成人| 丰满少妇一区| 999精品在线| 私拍精品福利视频在线一区| 午夜国产一区二区| 国产高清视频一区二区| 日韩av一区二区三区|