MainComponent
에 자식 구성 요소가로드되는 <router-outlet>
이 있습니다. /messages
-url의 경우 messagesComponent
이로드됩니다. 컨테이너에서 사용자가 스크롤이있는 <router-outlet>
이 같이있는 경우에 나는 터집니다 MainComponent
에 evenlistener을 추가 한 다음 onContainerScrollEvent
화재가 나는 새로운 메시지를 얻기 위해 messagesComponent
에 함수를 호출 할동적으로로드 된 구성 요소에서 함수 호출
@Component({
selector: "main-component",
template: `
<div (scroll)="onContainerScrollEvent($event)">
<router-outlet></router-outlet>
</div>
`
})
export class MainComponent {
private messagePage: number = 0;
onContainerScrollEvent(event: any) {
this.messagePage += 1;
}
}
. onInit
에서 발생하고 자체 이벤트를 부모 이벤트로 전달하는 messagesComponent
에 EventEmitter를 추가했지만 <router-outlet>
은이를 지원하지 않습니다.
UPDATE 아흐메드의 답변을 통합하는 내 질문에 대한 답 아래 :
이고 MessageService :
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class MessageService {
private messagesPageSource = new Subject<number>();
messagesPage$ = this.messagesPageSource.asObservable();
public setPage(page: number)
{
this.messagesPageSource.next(page);
}
}
MainComponent :
import { Component, OnInit } from '@angular/core';
import { MessageService } from './messages.service';
@Component({
selector: "main-component",
template: `
<div (scroll)="onContainerScrollEvent($event)">
<router-outlet></router-outlet>
</div>
`
})
export class MainComponent {
private pageNumber: number = 1;
constructor(private messageService: MessageService) {
messsageService.messagesPage$.subscribe(p => { });
}
onContainerScroll(event: any) {
this.pageNumber += 1;
this.messageService.setPage(this.pageNumber);
}
}
messagesComponent
을
'MainComponent'를'MessagesComponent'에 삽입하고이 구성 요소를'MainComponent'에 전달하려고 했습니까? – yurzui