Он печатает undefined, потому что вы сказали Angular создать новый экземпляр ValidateEqualDirective для валидатора через useClass
:
providers:[{provide:NG_VALIDATORS, useClass:ValidateEqualDirective
^^^^
Это означает, что у вас есть два экземпляра вашего класса: первый привязан к html, а вторая была создана для проверки.
Вместо этого вы должны использовать тот же экземпляр директивы:
providers:[{provide:NG_VALIDATORS, useExisting: ValidateEqualDirective
^^^^^^^^^^^^^^^
reuse current directive instance