我正在为 Angular2 寻找更好的表表示,发现ng2-smart-table很好用。但问题是它似乎没有提供一种直接的方式来在线编辑中使用下拉菜单或日期选择器。
有什么方法可以使它成为可能,或者我可以使用哪些替代组件来表示我的 Angular2 应用程序中的表格视图。
我正在为 Angular2 寻找更好的表表示,发现ng2-smart-table很好用。但问题是它似乎没有提供一种直接的方式来在线编辑中使用下拉菜单或日期选择器。
有什么方法可以使它成为可能,或者我可以使用哪些替代组件来表示我的 Angular2 应用程序中的表格视图。
对于日期选择器:
在设置[.ts]
settings={
columns:{
// other columns here
dob: {//date of birth
title: 'yyyy/mm/dd hh:mm',
type: 'html',
editor: {
type: 'custom',
component: DoBComponent,
},
}
}
在 dob.component.html
<owl-date-time autoClose [(ngModel)]="datevalue" dataType="string"
(click)="updateValue()">
</owl-date-time>
在 dob.component.ts
datevalue: any;
updateValue(){
console.log(this.datevalue);
this.cell.newValue = this.datevalue;
}
where your DoBComponent extends DefaultEditor
在你的 module.ts
declarations:[
//other compnents here
DoBComponent
]
entryComponents: [
DoBComponent
]
希望这可以帮助 !!!
参考:https : //www.npmjs.com/package/ng-pick-datetime,https: //akveo.github.io/ng2-smart-table/#/examples/custom-editors-viewers
我为下拉菜单找到了类似的东西:
private settings = {
columns: {
name: {
title: 'Name'
},
valid: {
title: 'Valid',
type: 'html',
editor: {
type: 'list',
config: {
list: [
{value: true, title: 'Valid'},
{value: false, title: 'Not valid'}
],
},
}
}, //... more columns
}
}
当我使用@ampati-hareesh 的灵魂时,我遇到了三个问题。
“具有未指定名称属性的表单控件没有值访问器”。将 ngDefaultControl 添加到 owl-date-time 可以解决它。
“无法读取未定义的属性‘isInSingleMode’”。添加“输入”标签解决了它。
未分配值。将事件从“clicked”更改为“afterPickerClosed”解决了它。
我最终的 dob.component.html 看起来像;
<input placeholder=""
[(ngModel)]="dateValue"
[owlDateTimeTrigger]="dt1" [owlDateTime]="dt1">
<owl-date-time [pickerType]="'calendar'" autoClose [(ngModel)]="dateValue"
ngDefaultControl dataType="string"
(afterPickerClosed)="updateValue()" #dt1>
</owl-date-time>
public settings = {
actions: {
position: 'right',
//custom: [{ name: 'routeToAPage', title: `<img src="/icon.png">` }]
},
columns: {
ctg_name: {
title: 'Category',
},
ctg_visible: {
title: 'Visible',
editor: {
type: 'list',
config: {
selectText: 'Select',
list: [
{value: '1', title:'True'},
{value: '0', title:'False'}
],
},
}
}
},
};