Tengo el siguiente componente:
@Component({ templateUrl: './app.component.html', styleUrls: ['./app.component.scss'] }) export class AppComponent { // Must reference the enum to be able to use types later enumModalContentType = EnumModalContentType; // Changes according to button clicks to point to the right component to show in modal modalContentType: EnumModalContentType; }
<!-- Button trigger modal --> <button type="button" class="btn btn-primary" (click)="modalContentType = enumModalContentType.EnumValue" data-toggle="modal" data-target="#myModal"> Launch demo modal </button> <app-modal [contentType]="modalContentType"></app-modal>
Que funciona perfectamente bien. Mi pregunta es: ¿por qué estamos obligados a hacer referencia a EnumModalContentType para poder usarlo en el HTML más adelante? ¿Por qué no podemos simplemente usarlo como un tipo directamente?
Todo se reduce al alcance. Es la misma razón por la que si está creando AOT, no puede usar variables private
en sus plantillas. Debe haber una variable pública local en el mismo ámbito que su plantilla. En el momento de la compilación, todo está lógicamente separado y delimitado, y sin una variable local no hay nada a lo que vincular la plantilla.