2016-12-21 2 views
3

내 머리를 @Input@Output 번으로 돌리려고 시도했는데 내 접근 방식이 잘못되었다는 표시가 있었으면합니다. app.component 부모 구성 요소에서@Input 및 @Output을 사용하는 사용자 지정 이벤트

나는

@Output() dateChanged = new EventEmitter(); 
dateSelected:any; 

onDateSelected() { 
    this.dateSelected = this.yearValue + "|" + this.monthValue; 
    console.log(this.dateSelected);//is selected and prints out to console 
    this.dateChanged.emit(this.dateSelected); 
} 

을이 아이의 HTML을

<div> 
<!--app.component.html--> 

     <app-expenses (dateChanged)="onDateSelected($event)"></app-expenses> 
</div> 

아이 컴퍼넌트 되어 다음과 같은 한 (ExpensesComponent) 구성 요소는 다음과 같다

@Input() dateChanged: any; 

onDateSelected(e) { 
    console.log(e);//doesnt reach this point 
} 

onDateSelected는 0123을 실행하지 않습니다.이 날짜 값을 자녀에게 전달하는 좋은 방법은 무엇입니까? 부모가 자식 요소 다른 방법은 주위의 이벤트를 수신하는

감사

+1

코드에서 부모가 무엇이고 자녀가 무엇인지 분명하지 않습니다. 나에게''은 자식 일 수 있고''는 부모 일지 모르지만 질문이 의미가 없다고 생각합니다. 자식이 이벤트를 내보내는 경우 왜 이벤트가 수신되면 자식에 대해 onDateSelected가 호출되기를 원하십니까? –

답변

1

@Output() 이벤트입니다.

부모와 자녀 간 통신의 경우 데이터 바인딩을 사용할 수 있습니다.

<app-expenses [selectedDateInChild]="selectedDateOfParent"></app-expenses> 
+0

고마워. 날짜를 값으로 전달하는 부모로부터 자식 컴포넌트의 함수를 호출 할 수 있습니까? – Arianule

+0

'selectedDateInChild'를 setter로 만들면'selectedDateOfParent'가 바뀔 때마다 setter의 코드가 실행됩니다. –

+1

그걸로 당신과 함께 있습니다 ... 이제 알겠습니다. 감사합니다. – Arianule

관련 문제