我有多個功能的全部與不同的簽名:訂閱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的返回值來顯示在我的組件中。 –