Editar: esta respuesta ahora es incorrecta. No había una guía oficial sobre el tema cuando lo publiqué, pero como se explica en la respuesta (excelente y correcta) de @ Yaroslov, este ya no es el caso: Codelizer ahora advierte y la compilación de AoT fallará en las referencias a variables privadas en plantillas de componentes . Dicho esto, a nivel conceptual, todo aquí sigue siendo válido, por lo que dejaré esta respuesta, ya que parece haber sido útil.
Sí, esto se espera.
Tenga en cuenta que private
y otros modificadores de acceso son construcciones mecanografiadas, mientras que Componente / controlador / plantilla son construcciones angulares de las que no sabe nada. Los modificadores de acceso controlan la visibilidad entre clases: hacer un campo private
evita que otras clases tengan acceso a él, pero las plantillas y los controladores son cosas que existen dentro de las clases.
Eso no es técnicamente cierto, pero (en lugar de comprender cómo las clases se relacionan con los decoradores y sus metadatos), podría ser útil pensar de esta manera, porque lo importante (en mi humilde opinión) es dejar de pensar en la plantilla y el controlador como algo separado entidades para pensar en ellas como partes unificadas de la construcción Componente: este es uno de los principales aspectos del modelo mental ng2.
Pensando en ello de esa manera, obviamente esperamos que las private
variables en una clase de componente sean visibles en su plantilla, por la misma razón que esperamos que sean visibles en los private
métodos de esa clase.