Angular ng-zorro-antd 使用nz-table冰更,更改數(shù)據(jù)不渲染的問題

最近在工作中使用angular产徊,組件庫使用ng-zorro-antd,邊學邊用蜀细。在寫表格組件的時候發(fā)現(xiàn)舟铜,點擊新增、刪除就奠衔,數(shù)據(jù)改變谆刨,表格卻沒有更新塘娶。

代碼如下:

<a (click)="addRow(item)">新增一列</a>
<nz-table
  #basicTable
  class="form-table"
  [nzBordered]="true"
  [nzData]="fields"
  [nzShowPagination]="false">
  <thead>
    <tr>
      <th>值的編號</th>
      <th>字段</th>
      <th>操作</th>
    </tr>
  </thead>
  <tbody cdkDropList (cdkDropListDropped)="drop($event, fields)">
    <!-- <tr *ngFor="let data of fields, let i = index" cdkDrag> -->
    <tr *ngFor="let data of basicTable.data, let i = index" cdkDrag>
      <td>值{{ i + 1 }}</td>
      <td>{{ data.fields }}</td>
      <td>
        <a (click)="deleteRow(item, i, index, data.$sortOperation)">刪除</a>
      </td>
    </tr>
  </tbody>
</nz-table>

對表格行數(shù)據(jù)遍歷有2種寫法,如下:

// 寫法1
<tr *ngFor="let data of fields, let i = index" cdkDrag>

// 寫法2
<tr *ngFor="let data of basicTable.data, let i = index" cdkDrag>
如果采用寫法1

寫法是官網(wǎng)示例的寫法之一
點擊新增時痊夭,數(shù)據(jù)push進去了刁岸,但是表格沒有新增一條

addRow(item) {
    item.fields.push({
        ...cloneDeep(fieldsGroup),
        add_id: addId,
    });
}

但使用如下寫法,點擊新增時生兆,數(shù)據(jù)push進去了难捌,但是表格沒有成功顯示新增

addRow(item) {
    item.fields = [
        ...item.groupByFields,
        {
          ...cloneDeep(fieldsGroup),
          add_id: addId,
        },
    ];
}

同理刪除的時候也是如此:
點擊刪除按鈕的時候,使用splice刪除一行鸦难,該數(shù)據(jù)已經(jīng)刪除,但表格頁面數(shù)據(jù)沒有消失

  deleteRow(item, index, tableIndex, sortOperation) {
    item.fields.splice(index, 1);
  }

但是如果使用filter员淫,將過濾后的結(jié)果重新賦值合蔽,表格成功刪除一條

  deleteRow(item, index, tableIndex, sortOperation) {
    item.fields = item.fields.filter(item => item.$sortOperation !== sortOperation);
  }

另外,如果只用表格拖拽功能時介返,寫法1也不能成功拖拽表格順序拴事。

如果采用寫法2

如果采用寫法2,上面的2中寫法都可以實現(xiàn)效果圣蝎。

分析

查找ng-zorro-antd源碼刃宵,發(fā)現(xiàn)其中是這么寫的:當nzData發(fā)生變化的時候重新渲染。

  ngOnChanges(changes: SimpleChanges): void {
    if (nzData) {
      this.nzData = this.nzData || [];
      this.nzTableDataService.updateListOfData(this.nzData);
    }
  }

查找發(fā)現(xiàn)

當Angular檢查組件的輸入屬性以進行更改時徘公,它(基本上)===使用臟檢查牲证。對于數(shù)組,這意味著對數(shù)組引用(僅)進行臟檢查关面。由于引用沒有改變坦袍,ngOnChanges()因此不會被調(diào)用。
OnChanges只對輸入的基本數(shù)據(jù)類型起作用等太,而引用數(shù)據(jù)類型不會觸發(fā)OnChanges方法捂齐。

當使用寫法1的時候,由于是引用數(shù)據(jù)類型缩抡,對表格行數(shù)據(jù)進行操作奠宜,不會觸發(fā)OnChanges方法,是不會觸發(fā)表格組件的重新渲染的瞻想,但是重新賦值改變了nzData的引用压真,會觸發(fā)OnChanges方法。

ng-zorro-antd官網(wǎng)使用寫法1是因為其數(shù)據(jù)結(jié)構(gòu)簡單内边,這個問題就不會出現(xiàn)榴都。在自己的工作中,數(shù)據(jù)層級多漠其,問題出現(xiàn)嘴高。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末竿音,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子拴驮,更是在濱河造成了極大的恐慌春瞬,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件套啤,死亡現(xiàn)場離奇詭異宽气,居然都是意外死亡,警方通過查閱死者的電腦和手機潜沦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門萄涯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人唆鸡,你說我怎么就攤上這事涝影。” “怎么了争占?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵燃逻,是天一觀的道長。 經(jīng)常有香客問我臂痕,道長伯襟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任握童,我火速辦了婚禮姆怪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘舆瘪。我一直安慰自己片效,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布英古。 她就那樣靜靜地躺著淀衣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪召调。 梳的紋絲不亂的頭發(fā)上膨桥,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音唠叛,去河邊找鬼只嚣。 笑死,一個胖子當著我的面吹牛艺沼,可吹牛的內(nèi)容都是我干的册舞。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼障般,長吁一口氣:“原來是場噩夢啊……” “哼调鲸!你這毒婦竟也來了盛杰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤藐石,失蹤者是張志新(化名)和其女友劉穎即供,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體于微,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡逗嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了株依。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驱证。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖恋腕,靈堂內(nèi)的尸體忽然破棺而出雷滚,到底是詐尸還是另有隱情,我是刑警寧澤吗坚,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站呆万,受9級特大地震影響商源,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谋减,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一牡彻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧出爹,春花似錦庄吼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至梢为,卻和暖如春渐行,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铸董。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工祟印, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粟害。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓蕴忆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悲幅。 傳聞我的和親對象是個殘疾皇子套鹅,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 從計劃2.0開始足足進行近四個月站蝠,其中發(fā)布過八個版本。當初給2.0做的愿景基本上達到要求芋哭,當然一切都還是那句話:【...
    cipchk閱讀 804評論 1 0
  • 首先沉衣,不得不說 @delon 是一個很不錯的業(yè)務(wù)組件,它是 ng-alain 默認使用的業(yè)務(wù)組件减牺! 但是由于 de...
    Tucke閱讀 6,603評論 0 51
  • Angular2.0 —構(gòu)建項目的流程以及使用ng-zorro ng-zorroy官網(wǎng):https://ng.an...
    殺個程序猿祭天閱讀 1,544評論 0 1
  • 久違的晴天豌习,家長會。 家長大會開好到教室時拔疚,離放學已經(jīng)沒多少時間了肥隆。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,520評論 16 22
  • 今天感恩節(jié)哎稚失,感謝一直在我身邊的親朋好友栋艳。感恩相遇!感恩不離不棄句各。 中午開了第一次的黨會吸占,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,562評論 0 11