Angular 使用自定义事件触发click事件侦听器
我有一个函数,它在动态创建的跨度上被触发Angular 使用自定义事件触发click事件侦听器,angular,Angular,我有一个函数,它在动态创建的跨度上被触发 treeFuncItom(_event:Event, catType){ console.log('INSIDE COMPONENT', _event); let myEvent = {}; if(catType == 'id'){ myEvent['value'] = _event['item']['dataItem']['_id']; myEvent['module'] = 'id';
treeFuncItom(_event:Event, catType){
console.log('INSIDE COMPONENT', _event);
let myEvent = {};
if(catType == 'id'){
myEvent['value'] = _event['item']['dataItem']['_id'];
myEvent['module'] = 'id';
}else {
myEvent['module'] = 'tag';
myEvent['value'] = _event['item']['dataItem']['name'];
}
this.ItemChange.emit(myEvent);
}
我试图通过在angular4中从.spec.ts传递虚拟事件来触发此函数
it('Should raise ItemChange event, and set module to \'id\'', async () => {
let _event = {
item: {
dataItem: {
name: 'abcd'
},
index: 0
},
originalEvent: 'MouseEvent',
index: 0
};
fixture.detectChanges();
await fixture.whenStable();
let ee = JSON.stringify(_event);
let item = null;
component.ItemChange.subscribe(it => {
console.log('Int Test', it);
item = it;
});
component.treeFuncItom(new Event(ee), 'id');
expect(item).not.toBeNull();
expect(item.module).toEqual('id');
});
但我在控制台中遇到错误:
ERROR: 'Unhandled Promise rejection:', 'Cannot read property 'dataItem' of undefined', '; Zone:', 'ProxyZone', '; Task:', 'Promise.then', '; Value:', TypeError{}, 'TypeError: Cannot read property 'dataItem' of undefined
at SidebarComponent.webpackJsonp../src/app/service-catalog/component/sidebar/sidebar.component.ts.SidebarComponent.treeFuncItom (http://localhost:9876/_karma_webpack_/webpack:/src/app/service-catalog/component/sidebar/sidebar.component.ts:26:40)
LOG: 'INSIDE COMPONENT', Event{isTrusted: false}
为什么被信任:false以及如何从spec.ts传递正确的事件
async
和wait
it('shouldnother',()=>{
常量mockEvent:any={
项目:{
数据项:{
_id:'item.dataItem.id',
名称:“item.dataItem.name”
}
}
};
const itemChange=spyOn(component.itemChange,'emit');
treeFuncItom(mockEvent,'id');
期望(项目变更)。已与({
模块:“id”,
值:mockEvent.item.dataItem.\u id
});
});
非常感谢,先生,这很有帮助