Events Angular2单击事件未触发

Events Angular2单击事件未触发,events,angular,typescript,Events,Angular,Typescript,我正在尝试实现自定义分页组件。这是一个模板 {{page.title}} {{size}} 组件代码: @Component({ selector: 'pager', templateUrl: 'templates/pager.component.html', styleUrls: ['styles/pager.component.css'] }) export class PagerComponent { @Input() totalItems: n

我正在尝试实现自定义分页组件。这是一个模板


    {{page.title}}
{{size}}
组件代码:

@Component({
    selector: 'pager',
    templateUrl: 'templates/pager.component.html',
    styleUrls: ['styles/pager.component.css']
})
export class PagerComponent {
    @Input() totalItems: number = 0;
    @Input() lastText: string = "»";
    @Input() firstText: string = "«";
    @Input() nextText: string = "›";
    @Input() prevText: string = "‹";
    public currentPage: number = 1;
    pageSizes: Array<number> = [10, 15, 30];
    public currentSize: number = this.pageSizes[0];

    @Output() pageChanged = new EventEmitter();

    get pages(): Array<IPage> {
        var list = new Array<IPage>();
        let pageCount = Math.ceil(this.totalItems / this.currentSize);
        let start = Math.max(this.currentPage - 1, 1);
        let end = Math.min(this.currentPage + 2, pageCount);
        list.push({ title: this.firstText, number: 1 });
        list.push({ title: this.prevText, number: this.currentPage - 1});
        for (let i = start; i <= end; i++) {
            list.push({ title: String(i), number: i });
        }
        list.push({ title: this.nextText, number: this.currentPage + 1});
        list.push({ title: this.lastText, number: end});
        return list;
    }

    public changePage(page: IPage) {
        this.currentPage = page.number;
        this.pageChanged.emit(null);
    };

    public resetCurrentPage(): void {
        this.currentPage = 1;
    }
}
@组件({
选择器:“寻呼机”,
templateUrl:'templates/pager.component.html',
styleUrls:['styles/pager.component.css']
})
导出类页面组件{
@Input()totalItems:number=0;
@Input()lastText:string=“»”;
@Input()firstText:string=“«”;
@Input()nextText:string=“›”;
@Input()prevText:string=“è”;
公共当前页面:编号=1;
页面大小:数组=[10,15,30];
public currentSize:number=this.pageSizes[0];
@Output()pageChanged=新的EventEmitter();
获取页面():数组{
var list=新数组();
让pageCount=Math.ceil(this.totalItems/this.currentSize);
让start=Math.max(this.currentPage-1,1);
让end=Math.min(this.currentPage+2,pageCount);
push({title:this.firstText,编号:1});
push({title:this.prevText,编号:this.currentPage-1});

对于(让i=start;i我认为问题在于函数changePage()有一个IPage类型的参数,您传递了一个数字

 public changePage(page: IPage) {
    this.currentPage = page.number;
    this.pageChanged.emit(null);
};
换成

 public changePage(num: number) {
    this.currentPage = num;
    this.pageChanged.emit(null);
};

我已经修复了!它类似于。它每次都生成新数组。因此angular无法将事件绑定到数组项。
@居恩特·泽克鲍尔,你应该很熟悉它。

你有什么错误吗?什么“不起作用”确切的意思是?@galvan没有任何错误。@Günter Zöchbauer它没有启动。我已经尝试创建自定义
,并在
单击
上绑定相同的函数。它与
div
配合使用效果很好。很抱歉,我忘了更改模板。而且它也不起作用。我也有同样的问题。如果你能告诉我,那就太好了您是如何解决的?我记不起实现的细节,请尝试在类字段中保存一个数组并在属性中返回它。请参阅我答案中的链接。