Свойство **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-tree :data-set :default-template="defaultTemplate" ></oda-tree>
    `,
    props: {
        dataSet: [
            {name: "1 строка", icon: 'icons:face'},
            {name:"2 строка", icon: 'icons:face', template: 'oda-table-cell',
                items:[
                    {name:"2.1 строка", icon: 'icons:favorite'},
                    {name:"2.2 строка",
                    items:[
                        {name:"2.2.1 строка", icon: 'icons:android'},
                        {name:"2.2.2 строка"},
                        {name:"2.2.3 строка"},
                    ]},
                    {name:"2.3 строка"}
                ]
            },
            {name:"3 строка",  icon: 'icons:android'},
        ],
        defaultTemplate: 'oda-table-cell'
    }
});
```

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

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

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