Wenn wir Code wie diesen versuchen:
<td [colspan]="1 + 1">Column</td>
oder dieses:
<td colspan="{{1 + 1}}">Column</td>
Wir stellen bald fest, dass " colspan
kein bekanntes natives Attribut ist".
Aus den A2-Dokumenten erfahren wir Folgendes:
Das Element hat keine Colspan-Eigenschaft. Es hat das Attribut "colspan", aber Interpolation und Eigenschaftsbindung können nur Eigenschaften festlegen, keine Attribute.
Wir müssen stattdessen Folgendes tun:
<td [attr.colspan]="1 + 1">Column</td>
Welches ist fair genug.
Frage:
Meine Frage ist, warum ist colspan
kein Attribut des DOM, und wenn es fehlt, wie kann der Browser möglicherweise Tabellen rendern, da der Browser das DOM und nicht das HTML rendert?
Wenn ich meinen Chrome-Inspektor öffne und zur Registerkarte "Eigenschaften" gehe, warum kann ich Colspan als Eigenschaft des Elements anzeigen?
Warum weist das DOM diese Inkonsistenz auf?
quelle
for
sollte jetzt funktionieren. Kürzlich wurde ein Alias hinzugefügt.Colspan ist ein Attribut des DOM, aber keine Eigenschaft. Daher ist es schreibgeschützt und wird vom Browser gerendert, da es sich um ein Attribut handelt.
Das Chrom zeigt sowohl Attribute als auch Eigenschaften an, wenn Sie es überprüfen.
Wenn Sie Folgendes in Betracht ziehen,
<html> <head> </head> <body> <table> <tr><th>A</th><th>A</th></tr> <tr><td colspan="2" id="xyz">B</td></tr> </table> </body> </html>
document.getElementById('xyz').colspan
Ergebnisse inundefined
Da es keine Eigenschaft istbut document.getElementById('xyz').id
Ergebnisse inxyz
Da es eine Eigenschaft istquelle
Attribute und Eigenschaften in Angular:
Wenn der Browser den HTML-Code analysiert, wird eine DOM-Darstellung des analysierten HTML-Codes im Speicher erstellt. Was die Daten aus den Attributen häufig zu Anfangswerten für Eigenschaften werden, die im DOM vorhanden sind.
Da Colspan keine DOM-Eigenschaft von a ist
<td>
sondern colSpan (Großbuchstabe S) eine ist, müssen Sie die colSpan-Eigenschaft verwenden. Hier ist ein<td>
Element, das in Chrome Devtools gezeigt wird:Wir können sehen, dass die HTML-Attribute in der Attribut-DOM-Eigenschaft gespeichert sind. Es ist wichtig zu wissen, dass sich der aktuelle Colspan in der DOM colSpan-Eigenschaft widerspiegelt, die unten im Bild zu sehen ist.
Wenn Sie die Eigenschaftsbindung in Angular verwenden, binden Sie mit diesen DOM-Eigenschaften buchstäblich 1 zu 1. Um an die Eigenschaft colSpan zu binden, benötigen wir die folgende Syntax:
<td [colSpan]="1 + 1">Column</td>
Wir können auch direkt an Attribute in Angular binden, wie Sie mit der folgenden Syntax hervorgehoben haben:
<td [attr.colspan]="1 + 1">Column</td>
classList
,className
) führt.quelle