I am trying to use titleclass to define two new classes : savoir and subsavoir.

In the TOC, I would like to get something like this :

* Savoir 1 -- First knowkledge title
* Savoir 1.a -- First "subknowledge" of the first knwolege.

I have instead :

* Savoir 1 -- First knowkledge title
* Savoir a -- First "subknowledge" of the first knwolege.

It lacks the **1.** in *savoir 1.a*

Here is a minimal exemple :

```
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage{lipsum}
\usepackage[explicit]{titlesec}
\usepackage[rightlabels]{titletoc}
\titlecontents{savoir}[0pt]{\addvspace{2pt\filright}}
  {\contentspush{\bf Savoir \thecontentslabel\ --\ }}
  {}{\titlerule*[0.8em]{.}\thecontentspage}
\titlecontents{subsavoir}[0pt]{\addvspace{2pt\filright}}
  {\contentspush{\bf Savoir \thecontentslabel\ --\ }}
  {}{\titlerule*[0.8em]{.}\thecontentspage}
  \contentsfinish

\makeatletter
  \renewcommand\@pnumwidth{0em}
\makeatother

\titleclass{\savoir}{straight}[\section]
\titleclass{\subsavoir}{straight}[\savoir]
\newcounter{savoir}
\newcounter{subsavoir}[savoir]
\renewcommand{\thesavoir}{\arabic{savoir}}
\renewcommand{\thesubsavoir}{\alph{subsavoir}}
\titleformat{\savoir}[hang]{\large\sf}{Savoir \thesavoir}{0.7em}{#1}
\titlespacing{\savoir}{0pt}{10pt}{5pt}
\titleformat{\subsavoir}{\large\sf}{Savoir \thesavoir\,\thesubsavoir}{0.7em}    {#1}
\titlespacing{\subsavoir}{0pt}{10pt}{5pt}

\begin{document}
\renewcommand{\contentsname}{Liste des savoirs}
\tableofcontents
\savoir{Premier savoir}
\lipsum[1]
\subsavoir{premier sous-savoir}
\lipsum[2]
\end{document}

```

![The TOC I get so far](https://i.stack.imgur.com/2Jw1t.png)

Thanks