2017-04-18 2 views
0

Im folgenden Codeausschnitt scheint es mir nicht möglich, auf die aktuelle margin-left css-Eigenschaft von .circle zuzugreifen. Ich habe eine PLUNKr erstellt, die dies zeigt.Cant 'Zugriffselemente margin-left

Ich versuche auf diese Eigenschaft zuzugreifen, da ich eine Eigenschaftsbindungsberechnung auf Mobile anpassen muss, die left-margin erfordert. Diese

ist ein Zusammenbruch von dem, was ich habe:

<div class="circle" [ngStyle]="{'width': calcCircleWidth()}"></div> 

.circle { 
    margin: 40px 20px; 
} 

private calcCircleWidth(): string { 
    var html: HTMLElement = (<HTMLElement>document.querySelector('.circle:first-child')) 
    ... 
} 

Dies ist das Ergebnis, wenn ich Eigenschaften log von var html: HTMLElement

html \\ <div class="circle" _ngcontent-iai-1="" style="width: 50%;"> 
html.style \\ CSS2Properties { width: "50%" } 
html.style.marginLeft \\ (nothing) 
+0

Etwas verrückt ist passiert mit meinem Plunkr - es jetzt zu beheben ,. – Zze

+0

Plunkr wurde behoben. – Zze

+0

Der Plunker ist etwa 2.0.0-beta.0. Das ist mehr als ein Jahr alt. Verwenden Sie einfach die Schaltfläche "Neu" in Plunker, um eine Plunker-Vorlage für eine aktuelle Angular-Version zu erhalten. –

Antwort

0

Basierend auf Ihren Code

<div class="circle" [ngStyle]="{'width': calcCircleWidth()}"></div> 

.circle { 
    margin: 40px 20px; 
} 

Seit margin ist NICHT a Das Attribut style für das Element kann nicht über das Element style des dom-Elements aufgerufen werden.

Mehr

Der richtige Weg, um Stil berechnet, die das Stil-Attribut und CSS berücksichtigt ist getComputedStyle zu verwenden. Docs: https://developer.mozilla.org/en/docs/Web/API/Window/getComputedStyle