[angular] EventEmitter angular2에 2 개의 매개 변수를 전달하는 방법

내 구성 요소에 EventEmitter있지만 오류를 반환하기 때문에 컴파일 할 수 없습니다.
Supplied parameters do not match any signature of call target

내 구성 요소 :

@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 메소드 에서 와 같이 매개 변수 전달을 고려하십시오 . 마찬가지로 아래 방법 makename변수는 해당 값을 보유하고 있습니다.

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


답변