For a LaTeX cross-reference to some numbered "object" to work properly, the \label
command that's associated with the object generally also has to increment the counter variable that's associated with the object via the \refstepcounter
mechanism. Since minipage
environments are not numbered automatically in this manner, you're finding that the \cref
command ends up generating a cross-reference to the object that was most recently incremented via \refstepcounter
-- in this case, a section
or subsection
object -- at the time the minipage's \label
command was issued.
Fortunately, there's a solution which works very well with the cleveref package and which works both with the memoir
class and the "standard" LaTeX document classes (article
, report
, and book
): Load the subcaption package and use its subfigure
environment instead of minipage
. A subfigure
environment, for all practical purposes, is the same as a minipage
environment. The only important difference is that a subfigure
environment is automatically associated with a counter variable that's incremented via \refstepcounter
. Hence, cross-references to subfigure
environments will work exactly as expected..
Incidentally, if you want all captions to be typeset automatically in slanted-roman text, you can tell LaTeX to do so by providing the instruction \captionsetup{textfont = sl}
. (The \captionsetup
macro is provided by the caption package, which is loaded automatically by the subcaption
package). Doing so globally, rather than providing \textsl
instructions separately in each and every caption, is not only convenient but will also simplify your life considerably in the future in case you decide to use a different font shape.

\documentclass{article}
\usepackage{subcaption}
\captionsetup{textfont = sl} % use slanted font shape automatically for all captions
\usepackage[noabbrev]{cleveref}
\begin{document}
\setcounter{figure}{3} % just for this example
\begin{figure}[h!]
\begin{subfigure}{0.5\textwidth}
\def\svgwidth{0.9\columnwidth}
%\input{filepath}
\caption{Subfigure 1 text}
\label{fig:sub:subfigure1}
\end{subfigure}
\begin{subfigure}{0.5\textwidth}
\def\svgwidth{0.9\columnwidth}
%\input{filepath}
\caption{Subfigure 2 text.}
\label{fig:sub:subfigure2}
\end{subfigure}
\caption{Figure text.}
\label{fig:whole_figure}
\end{figure}
\cref{fig:sub:subfigure1}
\end{document}
Addendum: To get cross-references to subfigures formatted as "4.a" instead of "4a", you could add the following instructions in the preamble (after loading subfigure
and before loading cleveref
):
\makeatletter
\renewcommand{\p@subfigure}{\thefigure.}
\makeatletter
The macro \p@subfigure
serves to insert a formatted "prefix" in cross-references to items that involve subfigure
counters. Here, the "prefix" consists of the figure number followed by a "." (dot).