Я создаю веб-приложение, которое использует SVG. Я создал компоненты, состоящие из элемента SVG, и они помещаются в корневой элемент svg
. У них есть селектор атрибутов, потому что дерево документов SVG/XML является строгим, поэтому я не могу использовать селектор элементов. И у них есть шаблон начинается с svg:g
тегом:Как создать компонент SVG динамически в Angular2?
@Component({
selector:'[foo]',
template: '<svg:g>...</svg:g>',
})
В приложении, я хочу, чтобы создать компонент, когда пользователь нажимает кнопку, и одновременно начать перетащив его. я думал, что это может быть достигнуто путем создания компоненты динамически с помощью ComponentResolver:
@ViewChild('dynamicContentPlaceHolder', {read: ViewContainerRef})
protected dynamicComponentTarget: ViewContainerRef
private componentResolver: ComponentResolver
onMouseDown() {
this.componentResolver
.resolveComponent(FooComponent)
.then((factory) => {
const dynamicComponent = this.dynamicComponentTarget.createComponent(factory, 0)
const component: FooComponent = dynamicComponent.instance
const element = dynamicComponent.location.nativeElement
// add event listener to start dragging `element`.
})
}
компонент создается, когда onMouseDown()
называется, но его DOM элемент div
, поэтому является незаконным элементом SVG документа и не может быть отображен.
Я попытался с selector='svg:g[foo]'
, создается тогда g
элемент, но пространство имен не для SVG (http://www.w3.org/2000/svg
), но нормальный HTML имен (http://www.w3.org/1999/xhtml
) и его класс HTMLUnknownElement
>g
.
Я также пробовал с selector='svg:svg[foo]'
, тогда svg:svg
элемент создан и отображается. Но svg:svg
не может перемещаться с атрибутом transform
, поэтому это не работает для моего приложения.
Как я могу создать динамический элемент svg:g
для компонента селектора атрибутов?
Я использую Angular2: 2.0.0-rc4.
звучит как https: // github.com/угловой/угловой/выпуск/10404 –
Спасибо, @ GünterZöchbauer! Проблема такая же, как и то, что я хочу попробовать. Спасибо за информацию. Я жду исправления решения/ошибки. – tyfkda