Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 使用ToggleButton($event)时角度错误--发出事件_Angular_Event Handling_Frontend - Fatal编程技术网

Angular 使用ToggleButton($event)时角度错误--发出事件

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

我编程一个按钮来关闭和打开一个边栏

因此,在默认的.component**.html**中,我将接收事件:

<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();
 }