Я полагаю, что ключ здесь - это оператор if
if (typeof control.value !== 'string' || !/^[a-zA-Z\s]+$/g.test(control.value))
Этот по существу говорит "если контрольное значение не является строкой ИЛИ не соответствует регулярному выражению /^[a-zA-Z\s]+$/
, верните ошибку.
Таким образом, чтобы разрешить использование специальных символов, необходимо настроить регулярное выражение, чтобы разрешить их использование. Например, чтобы разрешить дефисы, измените регулярное выражение на /^[a-zA-Z\s-]+$/
(обратите внимание на добавленные -
внутри скобок.