订阅Angular2 EventEmtter未接收值



我具有多个功能,所有功能都具有不同的签名:

getBooks(author, id);
getMusic(year, genre);
getProduct(name, id);

所有返回相同类型的数据: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.loadMore.emit();

不发出值。如果您使用

this.loadMore.emit('foo');

您将获得不同的输出

输出变量用于弹药,不使用它们可观察到

@Output() loadMore = new EventEmitter<string>();
this.loadMore.emit(..); 

它也应该有一种<T>

相关内容

  • 没有找到相关文章

最新更新