我目前正在尝试在使用Angular框架的不同文件类型的文档旁边显示一个不同的图标。然而,无论我将什么文件类型设置为fileExtension,例如txt或jpg,它总是返回默认值file-text作为iconType。
public getIcon(document: Document): string {
let mimeType = document.fileType;
let fileExtension = mimeType.split('.')[1];
let iconType = '';
switch (fileExtension) {
case fileExtension === 'jpeg' || 'gif' || 'png' || 'svg' || 'xml' || 'bmp' || 'jpg'|| 'tif' || 'tiff':
iconType = 'picture';
break;
case fileExtension === 'avi' || 'mpg' || 'wmv' || 'mpeg' || 'mp4' || 'mov':
iconType = 'video-folder';
break;
case fileExtension === 'cda' || 'mp3' || 'mpa' || 'wav' || 'wma':
iconType = 'volume';
break;
case fileExtension === 'pdf' || 'ai' || 'pptx':
iconType = 'article';
break;
default:
//includes: .docx , .odt, .rtf, .txt, .xml, .xps
iconType = 'file-text';
break;
}
console.log(iconType);
return iconType;
}
如果我尝试调试,我可以看到尽管fileExtension的值是“jpg”,但它返回默认的图标类型“file-text”。Image of debugging with breakpoints
我还尝试使用一个简单的if else循环等价物,但当我这样做时,它似乎总是返回所有的第一个if case值(例如:图片即使当fileExtension =“txt”):
if (fileExtension === 'jpeg' || 'gif' || 'png' || 'svg' || 'xml' || 'bmp' || 'jpg' || 'tif' || 'tiff') {
iconType = 'picture';
} else if (fileExtension === 'avi' || 'mpg' || 'wmv' || 'mpeg' || 'mp4' || 'mov') {
iconType = 'video-folder';
} else if (fileExtension === 'cda' || 'mp3' || 'mpa' || 'wav' || 'wma') {
iconType = 'volume';
} else if (fileExtension === 'pdf' || 'ai' || 'pptx') {
iconType = 'article';
} else {
iconType = 'file-text';
}
console.log(iconType);
return iconType;
我真的很困惑,为什么它不去适当的情况。任何帮助将不胜感激!
2条答案
按热度按时间0qx6xfy61#
每次都需要在if语句中重述条件检查的左侧;或在交换机中为每个文件扩展名类型设置单独的大小写。
如果您感兴趣,这里还有一些其他选择:
将每种图片类型包含在数组中,并检查该值是否包含在数组中:
创建一个对象,以文件扩展名为键,以图标类型为值:
hzbexzde2#
你用错了开关盒。以下是正确的语法: