W szablonie Angular 2 natknąłem się na dziwną składnię przypisania.
<template let-col let-car="rowData" pTemplate="body">
<span [style.color]="car[col.field]">{{car[col.field]}}</span>
</template>
Wydaje się, że let-col
i let-car="rowData"
utworzyć dwie nowe zmienne col
i car
które mogą być następnie wiąże się wewnątrz szablonu.
Źródło: https://www.primefaces.org/primeng/#/datatable/templating
Jak nazywa się ta magiczna let-*
składnia?
Jak to działa?
Jaka jest różnica między let-something
i let-something="something else"
?
angular
angular2-template
primeng
Steven Liekens
źródło
źródło
Odpowiedzi:
zaktualizuj Angular 5
ngOutletContext
została zmieniona nangTemplateOutletContext
Zobacz też https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29
oryginalny
Szablony (
<template>
lub<ng-template>
od 4.x) są dodawane jako widoki osadzone i są przekazywane do kontekstu.Z
let-col
właściwością context$implicit
jest udostępniana jakcol
w szablonie dla powiązań. Wrazlet-foo="bar"
z właściwością contextbar
jest udostępniana jakofoo
.Na przykład, jeśli dodasz szablon
Zobacz także tę odpowiedź i ViewContainerRef # createEmbeddedView .
*ngFor
działa również w ten sposób. Składnia kanoniczna czyni to bardziej oczywistymgdzie
NgFor
dodaje szablon jako osadzony celu DOM dla każdegoitem
zitems
i dodaje kilka wartości (item
,index
,odd
) do kontekstu.Zobacz także Używanie $ implict do przekazywania wielu parametrów
źródło
ngOutletContext
. To był brakujący związek między tym, co już wiedziałem, a informacjami, których nie mogłem znaleźć w dokumentacji.ngTemplateOutletContext
tak, jak zasugerowałeś w wydaniu Angular 5. Dokumentacja również nie wspomina nic o tym, że jest przestarzała. angular.io/api/common/NgTemplateOutlet*
robi składnia.Angular microsyntax umożliwia skonfigurowanie dyrektywy w zwartym, przyjaznym ciągu. Parser mikrosyntax tłumaczy ten ciąg na atrybuty w
<ng-template>
. Słowo kluczowe let deklaruje zmienną wejściową szablonu, do której odwołujesz się w szablonie.źródło