2016-04-24 2 views
2

Ich möchte ein svg dynamisch erstellen in Angular 2.Angular2 Svg Text Attribut Bindung

Ich habe mehrere Attribute wie x, y, Text-Anker, Schriftgröße, Schriftart-Familie hinzufügen und füllen, aber nur Die Schriftgröße funktioniert für mich. Die Füllung möchte nicht mit [] umgehen.

<svg xmlns="http://www.w3.org/2000/svg" height="100%" width="100%"> 
    <svg:text 
      [attr.x]="0" 
      [attr.y]="100" 
      [attr.text-anchor]="start" 
      [attr.font-size]="29" 
      [attr.font-family]="Helvetica" 
      attr.fill="#77777"> 
       <tspan 
        x="0" 
        dy="0">Random Text</tspan> 
    </svg:text> 
</svg> 

Plunker: http://plnkr.co/edit/D0eyyW9flV92rmoh8o85

Wie kann ich auf die Attribute binden oben aufgelistet?

Antwort

2

Haben Sie hardcoded Wert in string Format, sonst Angular wird in die Komponente für die Variable mit diesem Namen für die Aktualisierung der Bindung suchen. Außerdem sollten Sie fill Eigenschaftswert als #777 anstelle von #777777 angeben. Sie würden #777777 benötigt, wenn Sie Anwendung auf IE-Browser ausführen.

<svg:text 
     [attr.x]="0" 
     [attr.y]="100" 
     [attr.text-anchor]="start" 
     [attr.font-size]="29" 
     [attr.font-family]="'Helvetica'" 
     [attr.fill]="'#777'"> 
      <tspan 
       x="0" 
       dy="0">Random Text</tspan> 
</svg:text> 

Beachten Sie innerhalb [] Zeichen jedes Attribut Bindung, verpassten Sie das gleiche für attr.fill

Demo Here

+0

ich musste '[attr.text-Anker] = " 'start'"' für den Text-Anker, aber es scheint mein Problem zu lösen. Eine Sache, die nicht funktioniert, ist die x-Koordinate. Ich habe es auf 50 geändert, aber das Ergebnis war das gleiche. Irgendeine Idee? – fjozsef

+0

Ich kann sehen, dass die Änderung passiert, indem Sie ändern .. Blick auf hier http://plnkr.co/edit/FpqOQUUllMrs0ANtCBGu?p=preview –

+0

Ich habe das x-Attribut des Textes geändert, nicht die Tspans. Sollten nicht beide arbeiten? – fjozsef