Angular Material : extend a MatPaginator without creating a dupe paginator

标签 angular typescript inheritance angular-material2

@Component({
    selector: 'app-custom-paginator',
    template: '<mat-paginator #paginator pageSize="10"></mat-paginator>',
    })
export class CustomPaginator extends MatPaginator {
    @ViewChild(MatPaginator) paginator: MatPaginator;

    customMethod(): number {
        return 1
    }
}

主要成分:

@Component({
    selector: 'app-main-component',
    template: '<app-custom-paginator></app-custom-paginator>',
})
export class MainComponent implements OnInit, AfterViewInit {
    @ViewChild(CustomPaginator) paginator: CustomPaginator;
}

我正在尝试寻找一种方法来扩展 MatPaginator。我被卡住了,因为在我的子组件 CustomPaginator 中,我必须使用 @ViewChild 来访问自定义创建的 MatPaginator从其 View 创建的分页器。

我真正想要的是以某种方式从我的 MainComponent 创建一个 CustomPaginatorCustomPaginator 不需要创建和访问 MatPaginator 查看它自己的子项,因为 CustomPaginator 是一个 MatPaginator

最佳答案

您可以在子组件中使用 MatPaginator 组件的模板

@Component({
    selector: 'app-custom-paginator',
    template: (<any>MatPaginator).__annotations__[0]['template'],
})
export class CustomPaginator extends MatPaginator {

    customMethod(): number {
        return 1
    }
}

我用从未在 Material 组件上使用过的自定义基础组件完成了这些。你可以试试

关于 Angular Material : extend a MatPaginator without creating a dupe paginator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50438550/

相关文章:

javascript - 无法在 Angular 5 中为 Handsontable 注册自定义渲染器,在下面找不到已注册的渲染器

typescript - 如何递归地使用 Typescript 泛型?

ios - 在父类(super class)中声明一个可以被子类访问的 block

java - 在Java中创建没有构造函数的子类实例

ng-template 的 Angular Access 内部组件

angular - ngx-leaflet/Angular 2 中带有下拉选择输入的属性绑定(bind) map 单击事件

reactjs - 无法加载在 '@typescript-eslint' : Class extends value undefined is not a constructor or null 中声明的插件 '.eslintrc'

Angular Web Worker 应用程序不显示

java - 如何从 Java 线程中调用 invokeLater 方法?

javascript - 使用 Node Js 服务器运行 Angular2 应用程序