Есть компоненты, который принимает в себя несколько объектов пропсом. Есть HTML файлы (30+ штук), которые содержат различную компоновку для данных.
При такой реализации дает ошибку
Cannot find module './undefined.html'
- переменной не существует при инициализации шаблона
export default {
props: {
id: Number,
tmplLink: String
},
template: require(`./${this.tmplLink}.html`)
};
Есть ли возможность передать в этот компонент имя шаблона так, чтобы при инициализации переменная существовала.
Также, найдена была статья
по сабжу, листинг кода статьи ниже. Задача поднимается аналогичная, но автор использует VUE файлы. При попытке выполнить его код, получаю ошибку, что loader не функция.
<template>
<component :is="component" :data="data" v-if="component" />
</template>
<script>
export default {
name: 'dynamic-link',
props: ['data', 'type'],
data() {
return {
component: null,
}
},
computed: {
loader() {
if (!this.type) {
return null
}
return () => import(`templates/${this.type}`)
},
},
mounted() {
this.loader()
.then(() => {
this.component = () => this.loader()
})
.catch(() => {
this.component = () => import('templates/default')
})
},
}
</script>
UPD#1
loader() был сразу изменен на
loader() {
return () => import(`./templates/${this.tmplLink}`);
}
Ошибку получал следующую:
Failed to resolve async component: function () {
return __webpack_require__.e(/*! import() */ 0).then(__webpack_require__.bind(null, /*! ./templates/default */ "./resources/js/makets/templates/default/index.vue"));
}
Reason: TypeError: Cannot read property 'call' of undefined
Решение из статьи меня не очень прельщает, т.к. есть необходимость в разных шаблонах, а не во всем компоненте со своей логикой.
Быть может есть варианты решения по этим двум проблемам?