EventEmitter angular2에 2 개의 매개 변수를 전달하는 방법
구성 요소 a에 EventEmitter있지만 다음 오류를 반환하기 때문에 컴파일 할 수 없습니다. "제공된 매개 변수가 호출 대상의 서명과 일치하지 않습니다."
내 구성 요소 :
@Output() addModel = new EventEmitter<any>();
saveModel($event, make, name) {
this.addModel.emit(make, name);
}
매개 변수 중 하나를 삭제 this.addModel.emit()하면 작동하지만 2 개의 매개 변수를 어떻게 내 eventEmitter에 전달할 수 있습니까?
나는 또한 시도했다 :
@Output() addModel = new EventEmitter<any,any>();
하지만 작동하지 않습니다
EventEmitterAPI의 emit메소드 를 보면 유형의 단일 매개 변수 만 사용할 수 있습니다.T
emit (값? : T)
단일 매개 변수 만 허용되므로 objectemit 메소드 에서 와 같이 매개 변수 전달을 고려하십시오 . 마찬가지로 아래 방법 make및 name변수는 해당 값을 보유하고 있습니다.
this.addModel.emit({make: make, name: name});
//shorthand is below
this.addModel.emit({make, name});
강력하게 입력하는 또 다른 옵션은 다음과 같습니다.
@Output addModel = new EventEmitter<{make: string, name: string}>();
그런 다음 @ Pankaj-Parkar 쇼와 같이 방출 할 수 있습니다.
this.addModel.emit({make, name});
또는
this.addModel.emit({make: 'honda', name: 'civic'});
이제 사용하는 대신 강한 입력이 object또는 any.
나는 그것을 만들어서 고쳤다.
EventEmitter<object>();
그런 다음 다음과 같은 객체를 전달할 수있었습니다.
this.MyOutputVariable.emit({ name: 'jack', age: '12' });
그리고 그것은 효과가있었습니다.
나는 이것이 나에게 오래된 질문이라는 것을 알고 있습니다. 인터페이스를 만들고 코드를 더 체계적으로 구성 할 수있는 객체로 보낼 것입니다.
export interface addModelArgs{
make:string,
name:string
}
@Output() addModel = new EventEmitter<addModelArgs>();
다음과 같이 호출하십시오.
this.addModel.emit({make: 'honda', name: 'civic'});
or
let savParamters:addModelArgs={make: 'honda', name: 'civic'};
this.addModel.emit(savParamters);
참고 URL : https://stackoverflow.com/questions/41003639/how-pass-2-parameters-to-eventemitter-angular2
'Program Club' 카테고리의 다른 글
| rem은 CSS에서 em과 어떻게 다릅니 까? (0) | 2020.11.29 |
|---|---|
| Android N 디스플레이 크기가 작음보다 크게 설정된 경우 "캔버스 : 너무 큰 비트 맵을 그리려고합니다." (0) | 2020.11.29 |
| C ++ 단위 테스트 프레임 워크 (0) | 2020.11.29 |
| 대소 문자를 구분하지 않는 사전 (0) | 2020.11.29 |
| javascript 문자열을 html 객체로 변환 (0) | 2020.11.29 |