Czytałem skróconą instrukcję Angular 1 do 2 na stronie Angular i jedną rzeczą, której nie do końca rozumiałem, była różnica między tymi znakami specjalnymi. Na przykład taki, który używa gwiazdek:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Rozumiem, że symbol krzyżyka (#) definiuje się movie
jako zmienną szablonu lokalnego, ale co oznacza gwiazdka przed nim ngFor
? Czy to konieczne?
Dalej są przykłady, w których są używane nawiasy:
<a [routerLink]="['Movies']">Movies</a>
W pewnym sensie rozumiem, że nawiasy wokół routerLink
wiążą go z tym atrybutem HTML / dyrektywą Angular. Czy to oznacza, że są one wskaźnikiem dla Angulara do oceny wyrażenia? Jak [id]="movieId"
byłby odpowiednik id="movie-{{movieId}}"
w Angular 1?
Na koniec są nawiasy:
<button (click)="toggleImage($event)">
Czy są one używane tylko do wydarzeń DOM i czy możemy używać innych wydarzeń, takich jak (load)="someFn()"
lub (mouseenter)="someFn()"
?
Myślę, że prawdziwe pytanie brzmi: czy te symbole mają specjalne znaczenie w Angular 2 i jaki jest najłatwiejszy sposób, aby dowiedzieć się, kiedy użyć każdego z nich ? Dzięki!!
bind-
za[]
ion-
za()
lub<template [ngFor]>
za*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
którym pierwsza część aktualizujengModel
właściwość (@Input() ngModel;
zNgModel
dyrektywy) when
zmian foo` i 2. aktualizacjach częścifoo
, gdy@Output() ngModelChange;
(wNgModel
dyrektywie) emituje zdarzenie.NgModel
służy do wiązania wartości w celu utworzenia elementów i komponentów.[(bar)]
może być używany do dowolnej@Input() bar;
@Output() barChange;
kombinacji, również własnych komponentów.[prop]="value"
iprop="{{value}}"
czymkolwiek innym niż składnią? Oba mogą przekazywać wartość do@Input() value;
komponentu in.[prop]="value"
może przypisywać wartości dowolnego typu,prop="{{value}}"
zawsze określa ciąg znakówvalue
przed przypisaniem i dlatego jest bezużyteczny do przekazywania obiektów.[]
- Powiązanie właściwości Jednokierunkowe ze źródła danych do celu wyświetlenia. na przykładMożemy użyć bind- zamiast
[]
()
-> Powiązanie zdarzeń Jednokierunkowe od celu widoku do źródła danychMożemy użyć on- zamiast ()
[()]
- Dwustronnie wiążący banan w pudełkuMożemy użyć bindon- zamiast
[()]
źródło
Jak już wspomniano, dokumentacja Angulara, zwłaszcza „samouczek bohatera”, wyjaśnia to głębiej. Oto link, jeśli chcesz to sprawdzić .
Nawiasy to zdarzenia elementu, nad którym pracujesz, takie jak kliknięcie przycisku, takiego jak Twój przykład; może to być również kursor myszy, keyup, onselect lub dowolna akcja / zdarzenie dla tego elementu, a po znaku
=
znajduje się nazwa metody do wywołania - używając nawiasów dla wywołania. Ta metoda powinna być zdefiniowana w twojej klasie komponentu, tj .:Nawiasy działają w drugą stronę. Mają one pobierać dane z Twojej klasy - w przeciwieństwie do nawiasów, które wysyłały zdarzenie - więc typowym przykładem jest użycie stylu takiego:
Widzieć? Nadajesz elementowi styl oparty na modelu / klasie.
Do tego mógłbyś użyć ...
Zaleca się, aby używać podwójnych nawiasów klamrowych do rzeczy, które wydrukujesz na ekranie, takich jak:
Cokolwiek używasz, jeśli jesteś konsekwentny, pomoże to w czytelności twojego kodu.
Na koniec, dla twojego
*
pytania, jest to dłuższe wyjaśnienie, ale jest bardzo BARDZO ważne: abstrahuje implementację niektórych metod, które w przeciwnym razie musiałbyś zrobić,ngFor
aby zadziałało.Jedną ważną aktualizacją jest to, że
ngFor
nie będziesz już używać skrótu; musiszlet
zamiast tego użyć w następujący sposób:Ostatnią rzeczą, o której warto wspomnieć, jest to, że wszystkie powyższe dotyczą również twoich komponentów, np. Jeśli utworzysz metodę w swoim komponencie, zostanie ona wywołana przy użyciu
()
:źródło