Angular 使用ToggleButton($event)时角度错误--发出事件
我编程一个按钮来关闭和打开一个边栏 因此,在默认的.component**.html**中,我将接收事件:Angular 使用ToggleButton($event)时角度错误--发出事件,angular,event-handling,frontend,Angular,Event Handling,Frontend,我编程一个按钮来关闭和打开一个边栏 因此,在默认的.component**.html**中,我将接收事件: <app-header (toggleSideBarForMe)="sideBarToggler($event)"></app-header> 按钮用于关闭和打开侧栏的标题位于header.component.ts中: 用户单击此模块,事件将发送到其他模块名default.component**.html @Output() toggleSid
<app-header (toggleSideBarForMe)="sideBarToggler($event)"></app-header>
按钮用于关闭和打开侧栏的标题位于header.component.ts中:
用户单击此模块,事件将发送到其他模块名default.component**.html
@Output() toggleSideBarForMe: EventEmitter<any> = new EventEmitter();
constructor() { }
ngOnInit(): void { }
toggleSideBar() {
this.toggleSideBarForMe.emit();
}
@Output()切换SideBarForme:EventEmitter=new EventEmitter();
构造函数(){}
ngOnInit():void{}
toggleSideBar(){
this.toggleSideBarForMe.emit();
}
现在,您可以在控制台中看到错误:
src/app/layouts/default/default.component.html中出错:1:50-错误
TS2554:应为0个参数,但得到1个
1 <app-header (toggleSideBarForMe)="sideBarToggler($event)"></app-header>
~~~~~~
src/app/layouts/default/default.component.ts:5:16
5 templateUrl: './default.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DefaultComponent.
1
~~~~~~
src/app/layouts/default/default.component.ts:5:16
5 templateUrl:'./default.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~
组件DefaultComponent的模板中发生错误。
那么问题到底是什么呢?我多次试图解决这些问题,但都没有发现它是如何工作的。我是个新手。谢谢
Eden您正在从html中将$event作为argumennt传递,但未在函数的定义中定义。 default.component.ts
sideBarOpen = true;
constructor() { }
ngOnInit(): void { }
sideBarToggler(event) { // add event argument here.
this.sideBarOpen = !this.sideBarOpen;
}
或从模板中删除
<app-header (toggleSideBarForMe)="sideBarToggler()"></app-header>
您正在绑定模板中的
sideBarToggler($event)
,但控制器中的事件处理程序(sideBarToggler()
)没有参数
由于不使用事件,因此最好删除模板中的参数
或如果在处理程序中只需切换变量,则可以直接在模板中进行切换
不再需要
sideBarToggler()
处理程序。在下面的代码中,您正在传递一个参数$event
(toggleSideBarForMe)="sideBarToggler($event)"
但在功能级别,您不会接收或处理它
toggleSideBar() { // no receiving parameter
this.toggleSideBarForMe.emit();
}
解决方案
从html中删除$event
(toggleSideBarForMe)="sideBarToggler()"
或
将接收参数添加到函数中,如下所示
toggleSideBar(event) { // event (receiving parameter) added
this.toggleSideBarForMe.emit();
}
你好,Micronyks,这是错误!!谢谢,你解决了我的问题。。。。我从.html文件中删除了$event,然后控制台上没有出现错误。非常感谢Michael的快速回答@eden1996:忘了再提一件事,将参数添加到处理程序
sideBarToggler(event)
在这里没有意义,因为在发射器中没有发出任何事件:this.toggleSideBarForMe.emit()
。是的,这就是问题所在。我删除了论点中的事件,然后它就顺利进行了。谢谢你的大力帮助。
toggleSideBar(event) { // event (receiving parameter) added
this.toggleSideBarForMe.emit();
}