当我try 使用事件发送器和输出从子对象向父对象传递信息时,收到以下错误:
Argument of type 'Event' is not assignable to parameter of type 'string[]'.
Type 'Event' is missing the following properties from type 'string[]': length, pop, push, concat, and 29 more.ngtsc(2345)
这是子代码
@Component({
selector: 'app-calculator-buttons',
templateUrl: './buttons.component.html',
styleUrl: './buttons.component.css'
})
export class ButtonsComponent {
public firstRow:string[]=["7","8","9","+","="];
public secondRow:string[]=["4","5","6","*","/"];
public thirdRow:string[]=["1","2","3","-","AC"];
public fourthRow:string[]=["0",".","(",")"];
@Output()
public onNewresult:EventEmitter<string[]>=new EventEmitter();
public screenValues:string[]=[];
apagar():void{
console.log("Apagado");
let pantalla=document.getElementById("pantalla") as HTMLInputElement;
pantalla.value="";
}
operaciones():void{
let pantalla=document.getElementById("pantalla") as HTMLInputElement;
this.screenValues.unshift(pantalla.value);//añado el valor de la operacion al princio del array
let operacion:number=eval(pantalla.value);//eval trasfoma una cadena en una operacion matematica
pantalla.value=operacion.toString();
this.screenValues[0]+="= "+pantalla.value;
this.emitResult();
//usar services para pasar datos desde buttons hasta screen
}
monitor(index:string):void{
let pantalla=document.getElementById("pantalla") as HTMLInputElement;
pantalla.value+=index;
}
emitResult():void{
this.onNewresult.emit({...this.screenValues})
}
}
这是父代码:
import { Component } from '@angular/core';
@Component({
selector: 'app-main-page',
templateUrl: './main-page.component.html',
styleUrl: './main-page.component.css'
})
export class MainPageComponent {
onNewResult(arreglo:string[]):void{
console.log("Resultado recibido");
console.log({arreglo});
}
}
在这里我使用$event来获取子事件
<div class="container bg-secondary rounded my-2 p-2" id="contenedor">
<calculator-body (onNewResult)="onNewResult($event)"></calculator-body><
<app-calculator-buttons></app-calculator-buttons>
</div>
我正在使用Angular和Typescript,我可以做些什么来删除这个错误?
为此,我try 将字符串数组从子组件传递到父组件,我使用@Output和EventEmmiter,该方法设法访问子组件(消息出现在控制台中),但它从未进入组件,错误似乎是$Event不可分配给字符串数组类型