日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Angular jasmine fixture.detectChanges如何触发directive的set方法

發(fā)布時(shí)間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Angular jasmine fixture.detectChanges如何触发directive的set方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

測(cè)試代碼:

import { Component } from '@angular/core'; import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { FocusDirective } from './focus.directive'; import { KeyboardFocusService } from './services'; import { By } from '@angular/platform-browser';@Component({selector: 'cx-host',template: ` <div id="b" [cxFocus]="{autofocus: ':host'}" [cxRefreshFocusOn]="jerry"></div> `, }) class MockComponent {jerry = 1; }class MockKeyboardFocusService {get() {}set() {}shouldFocus() {}getPersistenceGroup() {}findFirstFocusable(){}hasPersistedFocus(){} }describe('FocusDirective', () => {let fixture: ComponentFixture<MockComponent>;let component: MockComponent;beforeEach(waitForAsync(() => {TestBed.configureTestingModule({declarations: [FocusDirective, MockComponent],providers: [{provide: KeyboardFocusService,useClass: MockKeyboardFocusService,},],}).compileComponents();fixture = TestBed.createComponent(MockComponent);component = fixture.componentInstance;fixture.detectChanges();}));it('should focus itself', () => {let service: KeyboardFocusService;service = TestBed.inject(KeyboardFocusService);const host = fixture.debugElement.query(By.css('#b'));const el = host.nativeElement;spyOn(service, 'findFirstFocusable').and.returnValue(el);spyOn(el, 'focus').and.callThrough();fixture.detectChanges();const event = {preventDefault: () => {},stopPropagation: () => {},};host.triggerEventHandler('focus', event);expect(el.focus).toHaveBeenCalled();expect(service.findFirstFocusable).toHaveBeenCalled();component.jerry = 2;fixture.detectChanges();}); });

在單元測(cè)試代碼里顯式修改Component的jerry屬性為2:

detectChanges會(huì)觸發(fā)ngZone的run方法,進(jìn)而調(diào)用_tick函數(shù):

以callback的方式回調(diào)_tick():

changeDetectorRef指向RootViewRef, 因此執(zhí)行Root view的change detection策略:

最后執(zhí)行到refreshView里的executeTemplate方法:

執(zhí)行template function:


待更新template的屬性名稱:cxRefreshFocusOn, 屬性值:2

function elementPropertyInternal(tView, tNode, lView, propName, value, renderer, sanitizer, nativeOnly) {ngDevMode && assertNotSame(value, NO_CHANGE, 'Incoming value should never be NO_CHANGE.');const element = getNativeByTNode(tNode, lView);let inputData = tNode.inputs;let dataValue;if (!nativeOnly && inputData != null && (dataValue = inputData[propName])) {setInputsForProperty(tView, lView, dataValue, propName, value);if (isComponentHost(tNode))markDirtyIfOnPush(lView, tNode.index);if (ngDevMode) {setNgReflectProperties(lView, element, tNode.type, dataValue, value);}}

這個(gè)33是element在LView中的索引值:

從lView里根據(jù)索引值33拿到directive實(shí)例:

最后設(shè)置該實(shí)例的值為2:



更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結(jié)

以上是生活随笔為你收集整理的Angular jasmine fixture.detectChanges如何触发directive的set方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄a视频 | 福利一区在线观看 | 丰满人妻一区二区三区53号 | 伊人网大香 | 全黄性高潮 | 爆操巨乳美女 | 五月天小说网 | 放荡闺蜜高h苏桃情事h | 精品人妻无码一区二区性色 | 特级西西444www大精品视频免费看 | av黄色大片 | 俺去日 | 日韩精品免费视频 | 台湾av在线 | 四虎影视成人永久免费观看亚洲欧美 | 久草久草 | 亚洲欧洲无码一区二区三区 | 欧美美女性高潮 | 香蕉网在线视频 | 欧美日韩在线视频免费播放 | 中文字幕四区 | 91porny九色 | 久热精品免费视频 | 亚洲天堂欧美 | 91最新国产 | 亚洲毛片av | 东北女人啪啪ⅹxx对白 | 日韩在线免费av | 麻豆精品在线视频 | 97精品在线视频 | 国产乱国产乱老熟300部视频 | 亚洲精品乱 | 久久精品视频中文字幕 | 农村脱精光一级 | 欧美日韩国产中文 | 日p视频在线观看 | 伊人手机在线视频 | 欧美日韩在线视频观看 | 深爱婷婷 | 亚洲精品在线播放视频 | 秋霞欧洲 | www.青青草| 亚洲成人精品在线观看 | 草久久久 | 日本va欧美va国产激情 | 污漫网站| 在线一区二区三区视频 | 草视频在线 | 国产成人综合自拍 | 玖玖国产精品视频 | 青青草免费看 | 男人的影院 | 日本人妻丰满熟妇久久久久久 | 床戏高潮做进去大尺度视频 | 日本激情一区二区三区 | 成年人免费在线观看网站 | 国产精品99无码一区二区视频 | 一乃葵在线| 日本新japanese乱熟 | 久久久www成人免费精品 | 久久久久久久亚洲av无码 | 最色网站 | 国产精品美女视频 | 久久天堂视频 | 欧美三级一级片 | 荒野求生21天去码版网站 | 丰满少妇被猛烈进入高清播放 | 日韩不卡一区二区 | 三级黄网 | 久久久久女 | 伊人avav| 国产精品99久久免费黑人人妻 | 国产黄视频网站 | 日韩在线视频在线观看 | 久久99精品久久久久久噜噜 | 一级黄色免费 | av不卡免费在线 | 不卡在线视频 | 免费无码毛片一区二区app | 国产精品久久久精品 | 九九爱精品 | 国产精品理论片在线观看 | 艳母日本动漫在线观看 | 国产精品一区网站 | 欧美xxxx888| 国产成人精品网 | 亚洲第一精品在线 | www.黄色片 | 黄色www| 免费看片网站91 | 日韩一区二区精品 | a级在线观看 | 91视频地址 | 黄色网页免费在线观看 | 羞羞在线观看 | 中文字幕亚洲乱码熟女1区2区 | 国产一区二区三区四区五区美女 | 精品人妻aV中文字幕乱码色欲 | 少妇喷白浆 |