sourcetip

Angular에서 이벤트 이미터에 2개의 매개 변수를 전달하는 방법은 무엇입니까?

fileupload 2023. 5. 28. 20:59
반응형

Angular에서 이벤트 이미터에 2개의 매개 변수를 전달하는 방법은 무엇입니까?

나는 내 구성요소에EventEmitter오류가 발생하여 컴파일할 수 없습니다.

제공된 매개 변수가 호출 대상의 서명과 일치하지 않습니다.

내 구성 요소:

@Output() addModel = new EventEmitter<any>();

saveModel($event, make, name) {
  this.addModel.emit(make, name);
}

의 매개 변수 중 하나를 삭제한 경우this.addModel.emit()작동하지만 2개의 매개 변수를 전달하는 것이 가능합니다.EventEmitter그리고 어떻게?

EventEmitter에서 method @ angular.io 을 방출하는 경우 유형의 단일 매개 변수만 사용할 수 있습니다.T

방출(값?: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-in-angular

반응형