を受信していないAngular2持つEventEmitterのサブスクライブ。私は再利用したいpagedDataコンポーネントを作成しましたAngular2で私は異なる署名を有する複数の機能のすべてを有する値
{
data: [
...
]
nextUrl: "http://api.com?page2"
}
:このpagedDataは、次のページをフェッチするために、データそのものやnextUrlが含まれています。書籍、音楽、プロダクトについては、ページは同じように見えます。唯一の違いは、すべての項目を繰り返し処理するforループ内のhtmlです。
export class PagedData implements OnInit {
@Output() loadMore = new EventEmitter();
nextPage = null;
pageData: IPagedData;
constructor() {
this.loadMore.subscribe(res => {
console.log('res', res);
});
}
ngOnInit() {
this.loadMore.emit();
}
}
など書籍特定コード::私の問題でも、私はloadMore
に加入し、イベントを発するきたということである
@Component({
template: `
<paged-data (loadMore)="update($event)"></paged-data>
`
})
export class BooksPage {
constructor(
public bookService: BookService) {
}
update(event) {
return this.BookService.getBooks('jack', 29349);
}
}
、
は、コンポーネントのコードは次のようになりますconsole.log('res', res);
は、res, undefined
と表示され続けます。
誰かが間違っているのを見ていますか?昔、私はエミッタではなくコールバックを作成し、すべてのページでコンポーネントに別のコールバックを渡すだけでした。コンポーネントは、その関数を呼び出してデータを取得することができます。たぶん私は、イベントエミッターでそのような振る舞いを作成する間違った方法を考えています。
私は、私のコンポーネントのコンストラクタが 'this.BookService.getBooks( 'jack'、29349)'のオブザーバブルを購読していないようです。私が基本的に望むのは、データをフェッチするために使用される任意のメソッドをコンポーネントに与え、コンポーネントにそれを示すことです。これはどんな関数でも構いませんが、常にIPageDataを返します –
あなたのコードからは何が起こるのかは分かりません。 'getBooks(...)'は何をしますか?それは何を返しますか、あるいは戻り値を使用しようとしていますか? –
getBooksはObservableを返し、私はこのobservableの戻り値を使って自分のコンポーネントに表示しようとしています。 –