【问题标题】:Angular Pagination - pager componentAngular Pagination - 寻呼机组件
【发布时间】:2017-05-25 02:33:45
【问题描述】:

我创建了一个分页组件,以让用户通过网格中的页面。我正在尝试在特定页面上使用此组件,但出现错误:

'pager' is not a known element:
1. If 'pager' is an Angular component, then verify that it is part of this module.
2. To allow any element add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. ("
</div>

[ERROR ->]<pager  (get-page)="getPage($event)"></pager>

我做错了什么?我也将此添加到我的 app.module 中。

import { PagerComponent } from './shared/pager.component';

这是我的寻呼机组件。

html:

<div>
    <button (click)="goToPage(1)" [disabled]="pageNumber==1">
        <md-icon>first_page</md-icon>
    </button>
    <button (click)="previous()" [disabled]="pageNumber==1">
        <md-icon>chevron_left</md-icon>
    </button>
    <input #input type="text" style="width: 30px;height:30px" (keyup.enter)="goToPage(input.value)" [(value)]="pageNumber" >

    <button (click)="next()" [disabled]="pageNumber==totalPages">
        <md-icon>chevron_right</md-icon>
    </button>
    <button (click)="goToPage(totalPages)" [disabled]="pageNumber==totalPages">
        <md-icon>last_page</md-icon>
    </button>
    <br />
    Showing page {{pageNumber}} of {{totalPages}} pages.
</div>

组件:

import {Component, Input, EventEmitter, OnInit} from '@angular/core';

@Component({
    selector: 'pager',
    templateUrl: 'pager.component.html',
    outputs: ['getPage: get-page']
})
export class PagerComponent {
    @Input('total-pages') totalPages: number;
    @Input('total-items') totalItems: number;

    getPage: EventEmitter<any> = new EventEmitter();
    totalPages: number;
    pageNumber: number;

    constructor(){
        this.pageNumber = 1;
    }

    goToPage(page:number){
        this.pageNumber = page;
        this.getPage.emit({
            pageNumber: page
        });
    }

    previous(){
        if(this.pageNumber <= 1 || this.pageNumber > this.totalPages || isNaN(this.pageNumber)) {
            return;
        }
        this.pageNumber = Number(this.pageNumber) - 1;
        this.goToPage(this.pageNumber);
    }

    next(){
        if(this.pageNumber >= this.totalPages || this.pageNumber < 1 || isNaN(this.pageNumber)){
            return;
        }

        this.pageNumber =  Number(this.pageNumber) + 1;
        this.goToPage(this.pageNumber);
    }
}

在另一个组件中的用法: html:

<pager  (get-page)="getPage($event)"></pager>

组件:

import { PagerComponent } from '../shared/pager.component';

@Component({
    templateUrl: './list.component.html',
    providers: [PagerComponent]
}) 
.....

    getPage(page) {
            this.getItems(page);
        }

【问题讨论】:

    标签: angular events pagination pager


    【解决方案1】:

    你导入了组件,但你声明了吗?

    import { PagerComponent } from './shared/pager.component';
    
    @NgModule({
      declarations: [PagerComponent] 
      // ...
    })
    

    另外,您不应该在另一个组件的providers 数组中声明一个组件。这适用于在该级别共享的注入服务。

    【讨论】:

    • 在我使用 Pager 的组件中,我将其声明为:@Component({ templateUrl: './list.component.html', providers: [PagerComponent] }) 是提供者正确的做法?
    • 我认为它不应该出现在您的提供商中。您可以在此处声明在该级别注入和共享的服务。
    猜你喜欢
    • 2011-07-23
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多