2016-09-06 2 views
1

Ich benutze Angular2 + D3, um ein Diagramm zu erstellen.
Ich würde gerne einen SVG-Filter auf die Balken anwenden, um einen Schlagschatteneffekt zu erzeugen.
Während der Filter erstellt wird und die Balken einen filter: url("#dropshadow")-Stil aufweisen, wird der Schatten nicht gerendert.
Könnte dies aufgrund der Angulars-Seite und der url() nicht finden den Filter? Was wäre der richtige Weg, um dieses Problem zu umgehen?Angular2 SVG-Filter-URL

+0

Bitte Code anzeigen. Haben Sie das auch außerhalb der Angular2-Anwendung versucht? Wie hast du die '' und 'APP_BASE_HREF' gesetzt? –

+0

' ...' in 'index.html'. Ich habe APP_BASE_HREF nicht eingestellt, sollte ich? Es funktioniert außerhalb von eckigen ... Code ist ein bisschen zu groß, um jetzt zu posten, wenn ich keine Lösung finden kann, werde ich ein kleineres Beispiel erstellen, das das Problem reproduziert ... – TommyF

+0

Ich habe es erwähnt, dass '< Base href = "..."> 'kann SVG brechen. Versuchen Sie stattdessen, 'APP_BASE_HREF' einzustellen (bereitstellen), um den Router zu konfigurieren. Wenn es für den Router ist, können Sie 'APP_BASE_HREF' bereitstellen und das Basistag weglassen. –

Antwort

3

Ich endlich herausgefunden. Die beste Lösung scheint die Lage über

import { Location } from '@angular/common'; 
... 
constructor(private location: Location) 

zu injizieren zu sein und es dann für die url()

.style('filter', 'url(' + this.location.path() + '#drop-shadow)') 

nun den Pfad festlegen, es wie erwartet funktioniert.

+0

Habe ein paar Stunden damit verbracht, meinen Kopf gegen die Wand zu schlagen, um dieses Problem zu beheben, bevor ich das Problem schließlich auf ng2-Router und SVG-Filter zurückführte. Irgendwann gefunden und jetzt funktioniert es perfekt. Sehr geschätzt! – jrdnmdhl