Estoy reescribiendo una biblioteca (que fue desarrollada por mí en angular1.x) usando angular4. En esa biblioteca, solía copiar los atributos de la directiva contenedora al elemento html interno. Por ejemplo <gn-input component.ng-model="somevar"></gn-input>
La plantilla Html para la directiva gn-Input tiene <input class="component" type="text" />
En la función de compilación de gn-input, solía leer todos los atributos en el elemento gn-input y copiarlos en la etiqueta input.component (con clase de componente). Esto me estaba dando flexibilidad porque estaba usando el alcance heredado (alcance: verdadero)
---- Para que quede más claro Por ejemplo, hay una directiva más, desarrollé
<gn-address country.ng-model="countryField" state.ng-model="stateField"></gn-address> En la plantilla de la dirección gn, había dos entradas (en realidad menús desplegables pero asumimos entradas por simplicidad) <input class='country' type="text" /> and <input class='state' type="text" /> .
En la función de compilación de gn-address, solía leer todos los atributos en el elemento de gn-address y establecerlos en las respectivas entradas de clase.
Este enfoque ahorró muchos de mis esfuerzos para admitir todas las directivas que los elementos internos admiten y el envoltorio era en realidad un envoltorio.
Estoy tan acostumbrado a angular1 y su flexibilidad que me resulta difícil hacer lo mismo en angular4 manteniendo la biblioteca AOT compatible.