2016-12-06 11 views
5

Я пытаюсь создать гистограмму с помощью Угловое 2 и D3 JS, ниже пакеты НПМ я добавил:«масштаб» и «SVG» не существует в «node_modules/@ типов/d3/индекс»

"d3": "4.4.0", 
"d3-tip": "0.7.1", 
"@types/d3": "^4.3.0", 

Ниже машинопись файла дал ошибку при компиляции:

Ошибки:

ERROR in ./angular2App/app/components/about/about.component.ts 
(34,21): error TS2339: Property 'scale' does not exist on type 'typeof "App_path/node_modules/@types/d3/index"'. 

ERROR in ./angular2App/app/components/about/about.component.ts 
(44,24): error TS2339: Property 'svg' does not exist on type 'typeof "App_path/node_modules/@types/d3/index"'. 

ответ

9

Ваш код использует D3 v3, тогда как вы настроили версию библиотеки v4.4.0. Так как v4 теперь все модульное пространство имена должны были быть flattened:

Тем не менее, есть одно неизбежное следствие принятия модулей ES6: каждый символ в D3 4.0 теперь делят плоское пространство имен, а не вложенные один из D3 3.х ,

Более конкретно:

  1. Линейная шкала включена в модуль d3-scale (см changes):

  2. Оси относятся к модулю d3-axis.

+0

Так что это было бы то же самое верно? D3.svg.axis(). Scale (this.xScale) = D3.axisBottom (this.xScale); Нет никакого ориентира, поэтому я предполагаю, что x - это дно. Надеюсь, я не отсюда ... –

+1

@KeyvanSadralodabai Да, они должны давать примерно одинаковый результат, хотя это трудно сказать, не видя остальной части вашего кода. Если это еще не ясно, или вы столкнулись с какими-либо проблемами, отправьте это как полнофункциональный вопрос. – altocumulus

+0

Просто FYI, что я попробовал, и это сработало с первой попытки. Еще раз спасибо! –