由于一些用例,我需要扩展Angular2中的PrimeNG组件.为了证明purpouses,我选择使用,DataTable因为它足够复杂.
在字面上复制粘贴@Component注释后,我添加了:
export class PPDataTable extends DataTable {}
此时我收到以下错误:No provider for DataTable.如果我添加DataTable到providers在注释阵列,我的内容DataTable是空的.
因此我尝试添加:{ provide: DataTable, useValue: PPDataTable }产生一些错误,例如:TypeError: co.dt.isSorted is not a function.我尝试登录this.isSorted新类,它确实存在.
我如何扩展这样的东西?
还有,有更好的解决方案来改变PrimeNg组件的选择器名称(以某种方式包装)?
编辑
似乎不是直接提供对象,而是提供包含对象的数组,这是(我的猜测)错误的原因.如果我进入源代码并将其更改为dt[0].isSorted()有效!
如何直接提供对象?
回答
似乎如果我提供{ provide: DataTable, useExisting: PPDataTable }它有效.
试试看我的好朋友:
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 {
}
Run Code Online (Sandbox Code Playgroud)
我们使用NG_VALUE_ACCESSOR将您的自定义控件与控制值访问器连接到ngModel.
检查本教程也可以提供帮助.
| 归档时间: |
|
| 查看次数: |
2421 次 |
| 最近记录: |