我有多个功能的全部与不同的签名:订阅Angular2 eventEmitter不接收值
所有返回相同类型的数据:pagedData
。这pagedData包含数据本身和nextUrl获取下一个页面:
{
data: [
...
]
nextUrl: "http://api.com?page2"
}
在Angular2我创建,我想重用pagedData组件。对于书籍,音乐和产品,页面看起来一样。唯一的区别是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();
}
}
和书具体代码如下:
@Component({
template: `
<paged-data (loadMore)="update($event)"></paged-data>
`
})
export class BooksPage {
constructor(
public bookService: BookService) {
}
update(event) {
return this.BookService.getBooks('jack', 29349);
}
}
我的问题是,即使我已经订阅了loadMore
,放出的情况下, console.log('res', res);
不断显示res, undefined
。
有没有人看到出了什么问题?在过去,我会做一个回调而不是一个发射器,并让每个页面给组件一个回调。该组件然后可以调用该函数来获取数据。也许我正在想用错误的方式来创建事件发射器的这种行为。
我明白了,我没有得到的是,我的组件的构造函数似乎没有订阅'this.BookService.getBooks('jack',29349)''的observable。我基本上想要的是给我的组件一个任意的方法,用于获取数据并将其显示在组件中。这可能是任何函数,但始终返回IPageData –
从代码中可以看出您期望发生的事情。 'getBooks(...)'做什么?它返回什么,或者你甚至试图使用返回值? –
getBooks返回一个Observable,我试图使用这个observable的返回值来显示在我的组件中。 –