Я бы сделал это с помощью динамических c компонентов <component :is=""></component>
<component :product="product" :is="product.name"></component>
В :is
вы можете динамически добавить имя компонента, и оно будет отображено.
Если вы создаете новый шаблон для продукта, вам просто нужно сделать 2 вещи.
Добавить новый объект в свой массив products
products: [
{ name: "ProductOne", value: 20 },
{ name: "ProductTwo", value: 30 },
{ name: "ProductRandom", value: 50},
{ name: "newProduct", value: 34 }
]
и зарегистрировать новый компонент.
import newProduct from "../path/to/newProduct.vue";
components: {
newProduct
}