Я читал краткий справочник по Angular 1 на 2 на веб-сайте Angular , и одна вещь, которую я не совсем понял, - это разница между этими специальными символами. Например, тот, который использует звездочки:
<tr *ngFor="#movie of movies">
<td>{{movie.title}}</td>
</tr>
Здесь я понимаю, что символ хеша (#) определяет movie
как локальную переменную шаблона, но что означает звездочка перед этим ngFor
? И нужно ли это?
Далее приведены примеры, которые используют скобки:
<a [routerLink]="['Movies']">Movies</a>
Я немного понимаю, что квадратные скобки routerLink
связывают это с этим атрибутом HTML / Angular-директивой. Значит ли это, что они являются указателем на Angular для вычисления выражения? Вроде [id]="movieId"
бы был эквивалент id="movie-{{movieId}}"
в Angular 1?
Наконец, круглые скобки:
<button (click)="toggleImage($event)">
Используются ли они только для событий DOM, и можем ли мы использовать другие события, такие как (load)="someFn()"
или (mouseenter)="someFn()"
?
Я предполагаю, что реальный вопрос заключается в том, имеют ли эти символы особое значение в Angular 2, и какой самый простой способ узнать, когда использовать каждый из них ? Спасибо!!
bind-
для[]
иon-
для()
или<template [ngFor]>
для*ngFor
.[ngModel]="foo" (ngModelChange)="foo = $event"
где первая часть обновляетngModel
свойство (@Input() ngModel;
измененияNgModel
директивы) when
foo`, а вторая часть обновляется,foo
когда@Output() ngModelChange;
(NgModel
директивы) испускает событие.NgModel
используется для привязки значений к элементам формы и компонентам.[(bar)]
может использоваться для любой@Input() bar;
@Output() barChange;
комбинации, в том числе и для ваших собственных компонентов[prop]="value"
иprop="{{value}}"
ничем иным , кроме синтаксиса? Оба они могут передавать значение@Input() value;
в компоненте.[prop]="value"
может присваивать значения любого типа,prop="{{value}}"
всегда преобразуется в строкуvalue
перед присваиванием и, следовательно, бесполезно передавать объекты.[]
- Свойство привязки в одну сторону от источника данных для просмотра цели. напримерМы можем использовать bind- вместо
[]
()
-> Привязка событий одну сторону от цели просмотра к источнику данныхМы можем использовать on- вместо ()
[()]
- Двухстороннее связывание банана в коробкеМы можем использовать bindon- вместо
[()]
источник
Как уже упоминалось, документация Angular, особенно «учебник по героям», объясняет это глубже. Вот ссылка, если вы хотите проверить это .
Круглые скобки - это события элемента, над которым вы работаете, например, нажатие кнопки, как в вашем примере; это также может быть mousedown, keyup, onselect или любое действие / событие для этого элемента, а после
=
указывается имя вызываемого метода - с использованием круглых скобок для вызова. Этот метод должен быть определен в вашем классе компонентов, а именно:Брекеты работает наоборот. Они должны получать данные из вашего класса - в противоположность круглым скобкам, которые отправляли событие - поэтому распространенным примером является использование такого стиля:
Видеть? Вы даете элементу стиль, основанный на вашей модели / классе.
Для этого вы могли бы использовать ...
Рекомендуется использовать двойные фигурные скобки для вещей, которые вы будете печатать на экране, например:
Что бы вы ни использовали, если вы будете последовательны, это поможет удобочитаемости вашего кода.
Наконец, для вашего
*
вопроса, это более длинное объяснение, но оно очень ОЧЕНЬ важно: оно абстрагирует реализацию некоторых методов, которую в противном случае вам пришлось бы сделать, чтобы заставитьngFor
работать.Одним из важных обновлений является то, что
ngFor
вы больше не будете использовать хэш; вам нужно использоватьlet
вместо этого следующее:И последнее, на что стоит обратить внимание: все вышеперечисленное относится и к вашим компонентам, например, если вы создаете метод в своем компоненте, он будет вызываться с помощью
()
:источник