【发布时间】:2019-12-20 00:20:18
【问题描述】:
我使用这个模块在表格中显示数据我不明白的一件事是如何在单元格中呈现图像??
我想知道,所以我谷歌它,发现我们可以在 ng2-smart-table 中使用自定义组件,但仍然存在一个漏洞(或者我可能没有正确理解?)我将所有数据存储在本地存储 我设法在单元格中添加按钮并打开弹出窗口以选择选项(galary/camera),但我不知道或无法弄清楚如何在单元格中显示??
所以有人有任何想法吗??
放一些代码供参考
1) Home.ts(只有 req 的代码)
settings = {
filter: false,
sort: false,
external: 'external',
edit: {
editButtonContent: 'Edit', // 'Modifier',
saveButtonContent: 'Save', // 'Enregistrer',
cancelButtonContent: 'Cancel', // 'Annuler',
confirmSave: true
},
add: {
addButtonContent: 'Add a sample', // Ajouter un prélèvement
createButtonContent: 'Validate', // Valider
cancelButtonContent: 'Cancel', // Annuler,
confirmCreate: true
},
delete: {
deleteButtonContent: 'Remove', // 'Supprimer',
confirmDelete: true
},
actions: {
columnTitle: ''
},
mode: 'inline',
columns: {
list: {
title: 'List A/B/C',
editor: {
type: 'textarea'
}
},
status: {
title: 'ABX',
editor: {
type: 'textarea',
}
},
paper: {
title: 'Préco',
editor: {
type: 'textarea'
}
},
image: {
title: 'Photo',
filter: false,
type: 'custom',
renderComponent: ButtonImageComponent,
defaultValue: 'Photo',
editor: {
type: 'custom',
component: ButtonImageComponent,
},
}
}
};
2) Home.html
<ng2-smart-table [settings]="settings" (deleteConfirm)="onDeleteConfirm($event)" [source]="data" (editConfirm)="onEditConfirm($event)"
(createConfirm)="onCreateConfirm($event)"></ng2-smart-table>
3) Button Component.ts(我在最后一列添加的自定义按钮)
import { Component, EventEmitter, OnInit, Output } from '@angular/core';
import { ActionSheetController, Platform, Events } from '@ionic/angular';
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
@Component({
selector: 'app-button-image',
templateUrl: './button-image.component.html',
styleUrls: ['./button-image.component.scss'],
})
export class ButtonImageComponent implements OnInit {
base64Image: any ;
constructor(public actionSheetController: ActionSheetController,public event: Events, public platform: Platform, public camera: Camera) { }
ngOnInit() {}
async presentActionSheet() {
const actionSheet = await this.actionSheetController.create({
header: 'Option',
buttons: [{
text: 'Take photo',
role: 'destructive',
icon: !this.platform.is('ios') ? 'ios-camera-outline' : null,
handler: () => {
this.captureImage(false);
}
}, {
text: 'Choose photo from Gallery',
icon: !this.platform.is('ios') ? 'ios-images-outline' : null,
handler: () => {
this.captureImage(true);
}
}]
});
await actionSheet.present();
}
async captureImage(useAlbum: boolean) {
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.DATA_URL,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
...useAlbum ? {sourceType: this.camera.PictureSourceType.SAVEDPHOTOALBUM} : {}
};
const imageData = await this.camera.getPicture(options);
this.base64Image = `data:image/jpeg;base64,${imageData}`;
this.event.publish('image:selectes', this.base64Image);
// this.photos.unshift(this.base64Image);
}
}
4) 及其 HTML
<ion-button (click)="presentActionSheet()">Select</ion-button>
【问题讨论】: