просто измените функцию поиска, чтобы включить новое условие
search = (text$: Observable) =>
text$.pipe(
debounceTime(200),
map(term => term === '' ? []
: options.filter(v =>
v.name.toLowerCase().indexOf(term.toLowerCase())>-1 ||
v.id==+term
).slice(0, 10))
)
. Обратите внимание, что, поскольку id - это число, вам необходимо преобразовать термин в число (+ термин)
a Простой пример можно увидеть в stackblitz
Да, это все еще репозиторий.
Что касается Репозитория == DAO, я думаю, что Репозиторий должен быть на уровне бизнес-логики, а DAO должен быть на уровне доступа к данным, т.е. я думаю они находятся на разных слоях. Как я понимаю, репозиторий вызывает методы DAO для загрузки и сохранения данных.
Я бы сказал, что шаблоны репозитория и единицы работы являются ортогональными.
Очень часто я хочу, чтобы одна единица работы охватывала операции над несколькими репозиториями, поэтому реализация этого принадлежат к более высокому уровню.
Опираясь на сказанное Sii, мне кажется лучше , если хранилище и единица работы не связаны между собой. Разделение проблем?
Рассматривая разделение задач, помните, что ваш репозиторий будет иметь методы реализации хранилища данных, что позволит вам убрать их из основного кода. Это полезно для модульного тестирования, а также для того, чтобы в конечном итоге полностью отказаться от реализации хранилища данных (примером реализации хранилища данных может быть LINQ-to-SQL в ASP.NET).