Bearbeiten: Diese Antwort ist jetzt falsch. Als ich es veröffentlichte, gab es keine offizielle Anleitung zu diesem Thema, aber wie in der Antwort von @ Yaroslov (ausgezeichnet und korrekt) erläutert, ist dies nicht mehr der Fall: Codelizer warnt jetzt und die AoT-Kompilierung schlägt bei Verweisen auf private Variablen in Komponentenvorlagen fehl . Auf konzeptioneller Ebene bleibt hier jedoch alles gültig, daher lasse ich diese Antwort offen, da sie hilfreich zu sein scheint.
Ja, das wird erwartet.
Beachten Sie, dass private
und andere Zugriffsmodifikatoren Typescript-Konstrukte sind, während Component / Controller / Template eckige Konstrukte sind, von denen Typescript nichts weiß. Zugriffsmodifikatoren steuern die Sichtbarkeit zwischen Klassen: Durch das Erstellen eines Felds wird private
verhindert, dass andere Klassen darauf zugreifen können. Vorlagen und Controller sind jedoch in Klassen vorhanden.
Das ist technisch nicht wahr, aber (anstatt zu verstehen, wie Klassen sich auf Dekorateure und ihre Metadaten beziehen), könnte es hilfreich sein, dies so zu betrachten, da es wichtig ist (IMHO), nicht mehr getrennt von Vorlage und Controller zu denken Entitäten, die sie als einheitliche Teile des Komponentenkonstrukts betrachten - dies ist einer der Hauptaspekte des ng2-Mentalmodells.
Wenn wir so denken, erwarten wir natürlich, dass private
Variablen in einer Komponentenklasse in ihrer Vorlage sichtbar sind, aus demselben Grund, aus dem wir erwarten, dass sie in den private
Methoden in dieser Klasse sichtbar sind .