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
配合使用效果很好。很抱歉,我忘了更改模板。而且它也不起作用。我也有同样的问题。如果你能告诉我,那就太好了您是如何解决的?我记不起实现的细节,请尝试在类字段中保存一个数组并在属性中返回它。请参阅我答案中的链接。