Edit: Diese Antwort ist jetzt falsch. Es gab keine offizielle Anleitung zu dem Thema, als ich es gepostet habe, aber wie in @ Yaroslovs (ausgezeichnete und korrekte) Antwort erklärt, ist dies nicht mehr der Fall: Codelizer warnt jetzt und die AoT-Kompilierung wird bei Verweisen auf private Variablen in der Komponente fehlschlagen Vorlagen. Das heißt, auf einer konzeptionellen Ebene bleibt alles hier gültig, also werde ich diese Antwort so lassen, wie es hilfreich scheint.
Ja, das wird erwartet.
Denken Sie daran, dass private
und andere Zugriffsmodifizierer Typescript-Konstrukte sind, während Komponenten/Controller/Templates kantige Konstrukte sind, von denen Typescript nichts weiß. Zugriffsmodifizierer steuern Sichtbarkeit zwischen Klassen: Erstellen eines Feldes verhindert andere Klassen von Zugriff darauf, aber Vorlagen und Controller sind Dinge, die innerhalb Klassen existieren.
Das ist technisch nicht richtig, aber (anstatt zu verstehen, wie Klassen sich auf Dekoratoren und ihre Metadaten beziehen), könnte es hilfreich sein, so zu denken, weil das Wichtigste (IMHO) ist, vom Nachdenken über das Template abzuweichen und Controller als getrennte Entitäten, um sie als vereinheitlichte Teile des Komponentenkonstrukts zu denken - dies ist einer der Hauptaspekte des mentalen Modells ng2.
Wenn wir so darüber nachdenken, erwarten wir natürlich, dass private
Variablen in einer Komponentenklasse in ihrer Vorlage sichtbar sind, aus dem gleichen Grund erwarten wir, dass sie in den private
Methoden für diese Klasse sichtbar sind.
@Yaroslav Admins Antwort ist korrekt. Bitte ändern Sie Ihre Auswahl für die Antwort. – maxisam