Свойство **defaultTemplate** задает имя компонента, с помощью которого отображаются все ячейки таблицы по умолчанию.

Это свойство изначально имеет значение **oda-table-cell**, т.е. именно этот компонент используется для отображения всех ячеек таблицы по умолчанию.

Однако вместо него в свойстве **defaultTemplate** можно указать любой другой пользовательский компонент, который будет использоваться в качестве шаблона отображения узлов дерева в дальнейшем.

Например:

```javascript line_edit_loadoda_[my-template.js]
ODA({
    is: 'my-template',
    template:`
        <style>
            :host{
                @apply --horizontal;
                align-items: center;
            }
        </style>
        <oda-icon :icon="item.icon ? item.icon : 'icons:star'"></oda-icon>
        <span>{{item[column.name]}}</span>`,
    props: {
        column:{},
        item:{}
    }
});
```

В простейшем случае у пользовательского компонента должны быть заданы два свойства:

1. **item** — строка таблицы, в которой находится данная ячейка.
1. **column** — столбец, которому принадлежит эта ячейка.

Столбец позволяет узнать, какое свойство объекта **item** необходимо использовать для отображение надписи у данной ячейки. Имя этого свойства совпадает с названием самого столбца, которое хранится в его свойстве **name**.

Через объект **item** можно получить доступ ко всем свойствам текущей строки и использовать их для ее отображения.

Например, в этом компоненте можно отобразить иконку с левой стороны от надписи, если у строки таблицы будет задано свойство **icon**.

```javascript _run_line_edit_loadoda_[my-component.js]_{my-template.js}_h=200_
import '/components/grids/tree/tree.js';
ODA({
    is: 'my-component',
    template: `
        <span>Компонент для отображения узлов</span>
        <select ::value="defaultTemplate">
            <option value="oda-table-cell" default>oda-table-cell</option>
            <option value="my-template">my-template</option>
        </select>
        <oda-table :data-set :default-template="defaultTemplate" ></oda-table>
    `,
    props: {
        columns: [
            {name: 'col1', label: 'Столбец 1'},
            {name: 'col2', label: 'Столбец 2'}
        ],
        dataSet: [
            {col1: "1 Строка", col2: "1", icon: 'icons:face'},
            {col1: "2 Строка", col2: "2", icon: 'icons:face', template: 'oda-table-cell'},
            {col1: "3 Строка", col2: "3", icon: 'icons:android'}
        ],
        defaultTemplate: 'oda-table-cell'
    }
});
```

Если у объекта строки свойства **icon** не будет, то пользовательский компонент отобразит иконку по умолчанию. В данном примере это иконка с именем **icons:star**.

``` info_md
Обратите внимание, что если для отображения ячейки используется компонент **oda-table-cell**, то иконка отображаться не будет, даже если она будет задана в свойстве **icon**, так как в этом компоненте такая возможность не предусмотрена.
```

Шаблон отображения можно задать отдельно у каждого строки таблицы с помощью специального свойства **template**. Например, вторая строка будет всегда отображаться с помощью компонента **oda-table-cell**, так как это указано в ней явно в свойстве **template**. Поэтому иконки в ячейках этой строки отображаться никогда не будут.
