JS CustomEvent 参数在 Angular 中作为未定义传递
JS CustomEvent params being passed as undefined in Angular
我试图从 JS 中调用一个 Angular 函数,但是传递给 Angular 的参数是未定义的。我错过了什么?理想情况下,我也想 return 来自 dispatchedEvent 的结果。我应该使用更好的解决方案吗?
JS函数
var event = new CustomEvent('test', {
id: "a", id2:"ttt"
});
window.dispatchEvent(event);
Angular 组件
@HostListener('window:test', ['$event.id','$event.id2'])
test(id,id2) {
console.log('ang called from JS: '+id+' '+id2)
}
控制台输出:从 JS 调用的 ang:undefined undefined
目标:从 JS 调用的 ang:一个 ttt
据我所知,CustomEvent
只能传递一个参数,即detail
。所以,你的代码不应该是可编译的。您需要将其更改为
onClick() {
const event = new CustomEvent('test', {
detail: {
id: 'a', id2: 'ttt'
}
});
window.dispatchEvent(event);
}
在此之后,您的处理程序将是
@HostListener('window:test', ['$event.detail.id', '$event.detail.id2'])
test(id, id2) {
console.log('ang called from JS: ' + id + ' ' + id2);
}
我试图从 JS 中调用一个 Angular 函数,但是传递给 Angular 的参数是未定义的。我错过了什么?理想情况下,我也想 return 来自 dispatchedEvent 的结果。我应该使用更好的解决方案吗?
JS函数
var event = new CustomEvent('test', {
id: "a", id2:"ttt"
});
window.dispatchEvent(event);
Angular 组件
@HostListener('window:test', ['$event.id','$event.id2'])
test(id,id2) {
console.log('ang called from JS: '+id+' '+id2)
}
控制台输出:从 JS 调用的 ang:undefined undefined
目标:从 JS 调用的 ang:一个 ttt
据我所知,CustomEvent
只能传递一个参数,即detail
。所以,你的代码不应该是可编译的。您需要将其更改为
onClick() {
const event = new CustomEvent('test', {
detail: {
id: 'a', id2: 'ttt'
}
});
window.dispatchEvent(event);
}
在此之后,您的处理程序将是
@HostListener('window:test', ['$event.detail.id', '$event.detail.id2'])
test(id, id2) {
console.log('ang called from JS: ' + id + ' ' + id2);
}