¿Cómo crear instancias y aplicar directivas mediante programación?

Sé que en ng2 tenemosComponentFactoryResolver que puede resolver fábricas que podemos aplicar a unViewContainerRef.

Pero, ¿hay algo similar para las directivas? ¿Una forma de instanciarlos y aplicarlos al contenido proyectado desde un componente?