У ngx-chips есть событие onAdding , которое вы можете использовать для дополнительной проверки.Внутри обработчика событий вы можете проверить, является ли компонент действительным, и отменить добавление, если элемент управления недействителен.Тогда текст останется.Для клавиши Enter это не может работать, потому что клавиша Enter закодирована для отправки формы и всегда очищает текст.Это можно увидеть в исходном коде GitHub компонента tag-input-form , который используется внутри тег-ввода.Проверьте метод onKeyDown
.
Вот пример реализации обработчика onAdding в вашем компоненте:
public onAdding(tag): Observable<string> {
if (!this.hasErrors()) { // this is tricky the this here is actually the ngx-chips tag-input component
return of(tag);
} else {
return EMPTY;
}
}
Как я уже упоминал в комментарии в коде из-за того, как происходит событиеОбработчик называется this
, внутри функции на самом деле является компонент ввода тегов ngx-chips, а не ваш компонент, который вы обычно ожидаете.
После того, как у вас есть этот метод, вы просто привязываете его в шаблоне, и он должен работать.
<tag-input ... [onAdding]="onAdding">
Я также создал форк вашего стекаблица с этой реализацией.
Если это не сработает, вам, вероятно, придется связаться с автором компонента для получения более подробной информации или использовать другой компонент.Например, компоненты углового материала содержат элемент ввода микросхемы , который аналогичен.