Вообще внешне должно работать.
Но, если данные улетают на сервер и потом оттуда возвращаются и заполняют контрол, то можно обрести геморой.
1. Заведите отдельный массив для выбранных элементов и оперируйте с ним
2. Не меняйте исходный массив используемый для заполнения селекта. Отметайте выбранные значения на уровне option ngIf
3. Возможно стоит завести дефолтную опцию с пустой строкой и на нее сбрасывать (это если ничего не поможет)
randomy, хотите по "понятиям"?
Тогда так: есть у него методы воздействовать на вас для возврата денег, оцените последствия, нет методов, решайте сами какую сумму себе оставить.
В любом случае продолжать с ним общение вы не будете (вывод из вашего вопроса).
Серверные решения я видел, в том числе и это. Интересует клиентское.
Есть вот это https://github.com/rkusa/pdfjs но что то оно не заводится даже в плейграунде.