angular - 在 Angular2 中扩展 PrimeNg 组件

标签 angular primeng

由于某些用例,我需要在 Angular2 中扩展一个 PrimeNG 组件。出于校对目的,我选择使用 DataTable,因为它足够复杂。

在字面上复制粘贴 @Component 注释后,我添加了:

export class PPDataTable extends DataTable {}

此时我收到以下错误:DataTable 没有提供者。如果我将 DataTable 添加到注释中的 providers 数组,我的 DataTable 的内容为空。

因此我尝试添加:{ provide: DataTable, useValue: PPDataTable } 这会产生一些错误,例如:TypeError: co.dt.isSorted is not a function .我尝试在新类中记录 this.isSorted,它确实存在。

我该如何扩展这样的东西?

此外,是否有任何更好的解决方案来更改 PrimeNg 组件的选择器名称(以某种方式包装它)?

编辑

通过调试堆栈查看更多内容后,我发现了这个:enter image description here

似乎我没有直接提供对象,而是提供了一个包含对象的数组,这(据我猜测)是错误的原因。如果我进入源代码并将其更改为 dt[0].isSorted() 它会起作用!

如何直接提供对象?

回答

似乎如果我提供 { provide: DataTable, useExisting: PPDataTable } 就可以了。

最佳答案

试试这个我的好 friend :

import { Component, forwardRef } from '@angular/core';
import { NG_VALUE_ACCESSOR } from '@angular/forms';
import { PrimeNgClassToExtend } from 'path';

const DATATABLE_VALUE_ACCESSOR: any = {
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef(() => MyClassThatIsExtending),
    multi: true
};

@Component({
    selector: 'my-class-extending',
    providers: [DATATABLE_VALUE_ACCESSOR],
    template: ``
})
export class MyClassThatIsExtending extends PrimeNgClassToExtend {
}

我们使用 NG_VALUE_ACCESSOR以便使用控件值访问器将您的自定义控件连接到 ngModel。

检查 this tutorial也可以提供帮助。

关于angular - 在 Angular2 中扩展 PrimeNg 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44519015/

相关文章:

Angular 2/PrimeNg - 通过@ViewChild 更新图表

javascript - Angular4 - 如何使 CanDeactive 守卫使用 dialogService 确认与链接的可观察对象一起工作?

angular - 如何在 Angular 2 中将多个 Observable 组合在一起

css - 如何在primeng中的卡住和解冻列表中设置不同的列样式和宽度

css - 当应用滚动时,primeng 中的子菜单被切断 primeng angular

Primeeng 分页器 rowsPerPageOption 支持 'All'

javascript - PrimeNG p-table 可滚动的scrollHeight 最后一行 p-dropdown 向上打开

node.js - 将数据从 Node js Controller 连续流式传输到网页

angular - 在 Angular 2 中没有导出成员 'ROUTER_DIRECTIVES' 和 'provideRouter'

amazon-web-services - Angular 2和aws,找不到路线