Да я не то что бы бест ищу, я просто только вариант с ngSwitch и нашёл, но он не покрывает задачу)
Последний раз я когда админку делал, там для каждой модели по два компонента (list, edit/create) интерфейс и сервис для работы с ним. Тогда я описал в core несколько классов: GenericEditComponent, GenericListComponent, GenericService, после чего в модуле обслуживающем ту или иную модель компоненты наследовал от Generic*. Но всеравно для каждой модели приходилось писать свои компоненты хоть и с минималтным количеством кода.и еще я использовал ngx-formly что позволило не переписывать шаблоны для формы каждый раз