SVG.js 3 с Angular 7 "не имеет совместимых подписей вызовов" ошибка - PullRequest
1 голос
/ 06 мая 2019

Я использую Angular 7 и смог использовать SVG.js v2. *, Но я не смог заставить SVG.js v3. * Работать.Я сделал два проекта github, первый из которых показывает SVG.js v2, работающий angular7-svgjs2 , а второй показывает, что SVG.js v3 не работает, единственное, что изменилось, это импортированная библиотека angular7-svgjs3

Использование SVG.js 2.7 * (Это работает)

import { Component, AfterContentInit } from '@angular/core';

import * as SVGjs from 'svg.js';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterContentInit {
  title = 'angular7-svgjs2';

  ngAfterContentInit () {
    let draw = SVGjs('drawing');
    let rect = draw.rect(100, 100);
  }
}

Использование SVG.js 3.0. * (Это невозможно)

import { Component, AfterContentInit } from '@angular/core';

import * as SVGjs from '@svgdotjs/svg.js';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterContentInit {
  title = 'angular7-svgjs3';

  ngAfterContentInit () {
    let draw = SVGjs('drawing');
    let rect = draw.rect(100, 100);
  }
}

Здесьошибка при запуске «ng serve» во втором примере svgjs v3 failure

Ответы [ 2 ]

1 голос
/ 06 мая 2019

svg.js v3 перенесен в esm. Итак, вы импортируете esm export.
Это не тот гибрид функции / объекта, который был у вас в v2.

Итак, импортируйте только то, что вам действительно нужно:

import {SVG, find, Rect, whateveryouneed} from '@svgdotjs/svg.js'

var canvas = SVG().addTo('#drawing')

Как вы можете видеть, изменилась инициализация новых документов.

0 голосов
/ 29 мая 2019

Со своей стороны я делаю это для использования svg.js 3.x в моем проекте:

import * as SvgJs from '@svgdotjs/svg.js';

this.svgContainer = SvgJs.SVG(this.svgElement.nativeElement);

После того, как вы решите, как импортировать классы / методы, мое решение (то, которое вы в основном делаетеиметь) требует, чтобы вы использовали пространство имен для доступа к ним.Один из @Fuzzyma требует, чтобы вы импортировали по одному все, что вы хотите использовать.

...