2017-05-12 8 views
2

왜 TransportComponent에서 TruckComponent로 데이터를 보낼 때 트럭의 정의되지 않은 값을 얻습니까?각도 2 자식에게 데이터 보내기

<tabset > 
    <tab heading="Trucks"> 
    <truck [actualTransport]="actualTransport"></general> 
    </tab> 
    <tab heading="Bus"> 
    <bus [actualTransport]="actualTransport"></general> 
    </tab> 
</tabset> 

TruckComponent 그 다음과 같습니다 : 오브젝트 데이터는 모든 필드 인구가

브라우저 콘솔에서
export class TruckComponent { 

    @Input() actualTransport: Subject<any>; 

    ngOnInit() { 
    this.actualCourse.subscribe(
    (data) => { 
     console.log(data) // in browser console truck value, is 
     present 
     console.log(data.truck) // here is undefined 
     } 
    } 
    } 

, 트럭 값이 정의되지 않은,하지만

export class TransportComponent { 
actualTransport: Subject<any> = new Subject(); 

this.serviceTransport.subscribe((data) => { 
      data.transports.forEach(transport => { 
       this._truckService.getTruck(transport.idTransport) 
       .subscribe((truck) => { 
        data.truck = truck ///Here I add to data field truck 
       }); 
      }); 
      this.actualCourse.next(truck); 
     }); 
} 

은 TransportComponent의 템플릿입니다 .

+1

여기에 제목을 사용하는 이유가 있으며 변수에'@ Input'을 사용하지 않는 이유가 무엇입니까? – Alex

+0

@ AJT_82 아니요, 왜 이런 일이 발생하는지 궁금합니다. – Dan

+0

자, 이제 Subject 대신 변수를 사용하는 것이 좋습니다. – Alex

답변

0

TruckComponent에서 OnInit lifecycle hook을 사용하고 있으며 하위 구성 요소이기 때문에 ngOninit()은 부모 구성 요소 인 TransportComponent가 초기화 될 때 트리거됩니다. ngOninit()을 부모 구성 요소로 이동하고 TruckComponentactualCourse.subscribe 메소드를 생성자로 사용하는 것이 좋습니다. 도움이 되었기를 바랍니다.