溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)

發(fā)布時(shí)間:2023-03-07 15:43:16 來源:億速云 閱讀:133 作者:iii 欄目:開發(fā)技術(shù)

本文小編為大家詳細(xì)介紹“angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

    angular 強(qiáng)制更新ui視圖方法

    強(qiáng)制更新ui視圖方法主要用在數(shù)據(jù)已經(jīng)改變,但是ui展示視圖不跟新情況

    1 主要使用方法類 ChangeDetectorRef

    Angular 各種視圖的基礎(chǔ)類,提供變更檢測(cè)功能。

    變更檢測(cè)樹會(huì)收集要檢查的所有視圖。

    使用這些方法從樹中添加或移除視圖、初始化變更檢測(cè)并顯式地把這些視圖標(biāo)記為臟的,意思是它們變了、需要重新渲染。

    1.1類方法一:markForCheck()

    當(dāng)輸入已更改或視圖中發(fā)生了事件時(shí),組件通常會(huì)標(biāo)記為臟的(需要重新渲染)。調(diào)用此方法會(huì)確保即使那些觸發(fā)器沒有被觸發(fā),也仍然檢查該組件。

    1.2類方法一:detach()

    從變更檢測(cè)樹中分離開視圖。 已分離的視圖在重新附加上去之前不會(huì)被檢查。 與 detectChanges() 結(jié)合使用,可以實(shí)現(xiàn)局部變更檢測(cè)。

    即使已分離的視圖已標(biāo)記為臟的,它們?cè)谥匦赂郊由先ブ耙膊粫?huì)被檢查。

    1.3類方法一:detectChanges()

    檢查該視圖及其子視圖。與 detach 結(jié)合使用可以實(shí)現(xiàn)局部變更檢測(cè)。

    1.4類方法一:checkNoChanges()

    檢查變更檢測(cè)器及其子檢測(cè)器,如果檢測(cè)到任何更改,則拋出異常。

    1.5類方法一:reattach()

    把以前分離開的視圖重新附加到變更檢測(cè)樹上。 視圖會(huì)被默認(rèn)附加到這棵樹上。引入 ChangeDetectorRef

    import { ChangeDetectorRef } from '@angular/core';

    2 賦值引入

    constructor(private ref: ChangeDetectorRef) { }

    3方法中調(diào)用

        this.ref.markForCheck();    // 就是在拿到數(shù)據(jù)后,執(zhí)行這兩行代碼,這是關(guān)鍵
        this.ref.detectChanges();

    angular踩坑 數(shù)據(jù)發(fā)生改變,視圖未更新

    大多數(shù)情況下,頁面的視圖會(huì)隨著數(shù)據(jù)的改變而改變,少數(shù)情況下,數(shù)據(jù)變了,而視圖不更新。

    angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)

    左側(cè)的視圖,右側(cè)數(shù)據(jù),數(shù)據(jù)改變時(shí),視圖未更新。。。。具體原因呢,可能是angular 臟檢查沒有檢測(cè)到數(shù)據(jù)更新吧。。。

    解決方案

    引入 ChangeDetectorRef ,使視圖強(qiáng)刷。

    import { Component, OnInit, Input, ChangeDetectorRef} from '@angular/core';

    angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)

    angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)

    讀到這里,這篇“angular強(qiáng)制更新ui視圖如何實(shí)現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

    向AI問一下細(xì)節(jié)

    免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

    AI