Ich bin auf eine seltsame Zuweisungssyntax in einer Angular 2-Vorlage gestoßen.
<template let-col let-car="rowData" pTemplate="body">
<span [style.color]="car[col.field]">{{car[col.field]}}</span>
</template>
Es scheint, dass let-col
und let-car="rowData"
erstellen Sie zwei neue Variablen col
und car
das kann dann innerhalb der Vorlage gebunden werden.
Quelle: https://www.primefaces.org/primeng/#/datatable/templating
Wie heißt diese magische let-*
Syntax?
Wie funktioniert es?
Was ist der Unterschied zwischen let-something
und let-something="something else"
?
angular
angular2-template
primeng
Steven Liekens
quelle
quelle
Antworten:
Aktualisieren Sie Angular 5
ngOutletContext
wurde umbenannt inngTemplateOutletContext
Siehe auch https://github.com/angular/angular/blob/master/CHANGELOG.md#500-beta5-2017-08-29
Original
Vorlagen (
<template>
oder<ng-template>
seit 4.x) werden als eingebettete Ansichten hinzugefügt und erhalten einen Kontext.Mit
let-col
dem Kontext wird die Eigenschaft$implicit
wiecol
in der Vorlage für Bindungen zur Verfügung gestellt. Mitlet-foo="bar"
dem Kontext wird die Eigenschaftbar
als verfügbar gemachtfoo
.Zum Beispiel, wenn Sie eine Vorlage hinzufügen
Siehe auch diese Antwort und ViewContainerRef # createEmbeddedView .
*ngFor
funktioniert auch so. Die kanonische Syntax macht dies deutlicherwo
NgFor
fügt die Vorlage als eingebettete Ansicht auf das DOM für jedenitem
vonitems
und fügt ein paar Werte (item
,index
,odd
) auf den Kontext.Siehe auch Verwenden von $ implict zum Übergeben mehrerer Parameter
quelle
ngOutletContext
. Das war das fehlende Bindeglied zwischen dem, was ich bereits wusste, und den Informationen, die ich in der Dokumentation nicht finden konnte.ngTemplateOutletContext
wie Sie es in der Version von Angular 5 vorgeschlagen haben. In den Dokumenten wird auch nichts darüber erwähnt, dass es veraltet ist. angle.io/api/common/NgTemplateOutlet*
Syntax tut.Mit der Angular-Mikrosyntax können Sie eine Direktive in einer kompakten, benutzerfreundlichen Zeichenfolge konfigurieren. Der Mikrosyntax-Parser übersetzt diese Zeichenfolge in Attribute auf der
<ng-template>
. Das Schlüsselwort let deklariert eine Vorlageneingabevariable, auf die Sie in der Vorlage verweisen.quelle