2017-02-17 2 views
0

오류가 발생하지 않지만 데이터가 상위 구성 요소로 전달되지 않습니다. 내가하고있는 방식은 온라인에서 찾은 모든 예제와는 약간 다르므로 이미 설정 한 방법에 대해 너무 확신하지 못했습니다. 지금까지 코드가 있습니다.@Output을 통해 데이터 객체 전달

나는 Parent Component 템플릿

<multiple-choice-radio *ngIf="expbTrigger" 
    [question]="question01" 
    (selectedO)="selectedI" //where I'm trying to pull the data into parent component 
></multiple-choice-radio> 

에 전화 해요 어떻게 Child Component 템플릿

<input type="radio" 
    [attr.name] = "quesForm.value.name" 
    [attr.id] = "ans.id" 
    [attr.value] = "ans.answer" 
    (click)  = "getSelected(ans)" //fetches data I want to pass 
    (click)  = "sendAnswer()" //sets fetched data to @Output 
    hidden 
/> 

Child Component

//a variable that stores the fetched data from a group of radio buttons 
selected = {value1: '', value2: ''}; 

//the output variable 
@Output() selectedO: EventEmitter<any> = new EventEmitter(); 

public sendAnswer =(): void => { 
    this.selectedO.emit(this.selected); 
} 

입에 전화 해요 방법 내가 전화하는 방법은 Parent Component

public selectedI(selected) { 
    this.selectedII = selected; 
} 

selectedII: any; //the variable I'm trying to store it into 

이것이 모든 작업을 수행하기 위해 합리적인 방법 일 수 있습니다. 여기서 내가 뭘 잘못하고 있니?

답변

1

필드 또는 메소드 이름을 입력하면 이벤트 바인딩이 지정 또는 호출되지 않고 단지 표현식 만 실행합니다. 표현식에는 할당이나 호출이 포함되어야합니다. $event은 방출 된 값을 참조합니다.

(selectedO)="selectedI = $event" // field 

또는

(selectedO)="selectedI($event)" // method 
+0

내가 부모 구성 요소의 템플릿의 템플릿에 저를 추가 할 생각입니까? 방금 값을로드하지 못했습니다. – Optiq

+0

대신'(selectedO) = "selectedI"' –

+1

답을 업데이트했습니다. 'selectedI'는 메서드가 아니라 속성입니다. –

관련 문제