If you receive your id to text mapping from the server, you would need to recreate items and stringify when new data comes, so they will be observables and you would need async pipe in the template
Note that virtual scroll can imperatively remove focused option from DOM. This causes ExpressionChange errors and to solve those take a look at a tiny IndexChange directive included in this example.