Estoy tratando de crear una aplicación angular2 para producción para la que estoy siguiendo este blog . Después de mi compilación exitosa de ngc cuando se lleva a cabo la compilación de tsc , se genera el siguiente error que se muestra en la imagen:
Después de buscar por un tiempo, encontré este blog que explica el problema en la sección "La propiedad de contexto" que no puedo entender correctamente, puede que le dé una buena idea de lo que está sucediendo mal. Básicamente, cuando hacemos que una variable sea privada, obtenemos "ERROR: la propiedad es privada y solo se puede acceder a ella dentro de la clase" .
Para un componente determinado, todos sus miembros (métodos, propiedades) a los que accede su plantilla deben ser públicos en el escenario de compilación AOT. Esto se debe al hecho de que una plantilla se convierte en una clase TS. Una clase generada y un componente son 2 clases separadas ahora y no puede acceder a miembros privados entre clases.
En resumen: no puede acceder a miembros privados en sus plantillas si desea utilizar la compilación anticipada.
Para una mejor explicación https://github.com/angular/angular/issues/11422
Tal vez otra respuesta aún más simple es:
Chicos, por favor no llamen a métodos privados, campos o propiedades desde el HTML :)
PD: al compilar el código *.ts a *.js , AOT se niega a conectar miembros no públicos con la plantilla HTML .
Y "sí", esto hará que su tubería de compilación falle: D
Obtuve esto cuando declaré inyectables privados en el constructor:
constructor(private service: SpecificObjectService) { }Y los usé en la plantilla:
*ngFor="let pd of service.listSpecificObject "La solucion es:
constructor(public service: SpecificObjectService) { }