3

我在打字稿文件中执行以下两个导入:

import { DOCUMENT } from '@angular/platform-browser';
import { Positioning } from '@ng-bootstrap/ng-bootstrap';

第一条语句有效,但是编译器抱怨第二条语句(ng-bootstrap import):

src/app/extensions/angular-calendar/directives/calendarTooltip.directive.ts(19,10): error TS2305: Module '"/Users/gg/OneDrive/Studies/Node/timely-frontend/node_modules/@ng-bootstrap/ng-bootstrap/index"' has no exported member 'Positioning'.

我已经检查我是否安装了 ng-bootstrap。我不确定这可能是什么原因。

以下是我的 tsconfig.json 文件:

{
  "compilerOptions": {
    "outDir": "build/app",
    "target": "es5",
    "module": "system",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false
  },
  "exclude": [
    "gulpfile.ts",
    "node_modules"
  ]
}

我安装的 ng-bootstrap:

gg:timely-frontend gaurav$ tree node_modules/@ng-bootstrap/ng-bootstrap
node_modules/@ng-bootstrap/ng-bootstrap
├── README.md
├── accordion
│   ├── accordion-config.d.ts
│   ├── accordion-config.js
│   ├── accordion-config.js.map
│   ├── accordion-config.metadata.json
│   ├── accordion.d.ts
│   ├── accordion.js
│   ├── accordion.js.map
│   ├── accordion.metadata.json
│   ├── accordion.module.d.ts
│   ├── accordion.module.js
│   ├── accordion.module.js.map
│   └── accordion.module.metadata.json
├── alert
│   ├── alert-config.d.ts
│   ├── alert-config.js
│   ├── alert-config.js.map
│   ├── alert-config.metadata.json
│   ├── alert.d.ts
│   ├── alert.js
│   ├── alert.js.map
│   ├── alert.metadata.json
│   ├── alert.module.d.ts
│   ├── alert.module.js
│   ├── alert.module.js.map
│   └── alert.module.metadata.json
├── bundles
│   ├── ng-bootstrap.js
│   └── ng-bootstrap.js.map
├── buttons
│   ├── radio.d.ts
│   ├── radio.js
│   ├── radio.js.map
│   ├── radio.metadata.json
│   ├── radio.module.d.ts
│   ├── radio.module.js
│   ├── radio.module.js.map
│   └── radio.module.metadata.json
├── carousel
│   ├── carousel-config.d.ts
│   ├── carousel-config.js
│   ├── carousel-config.js.map
│   ├── carousel-config.metadata.json
│   ├── carousel.d.ts
│   ├── carousel.js
│   ├── carousel.js.map
│   ├── carousel.metadata.json
│   ├── carousel.module.d.ts
│   ├── carousel.module.js
│   ├── carousel.module.js.map
│   └── carousel.module.metadata.json
├── collapse
│   ├── collapse.d.ts
│   ├── collapse.js
│   ├── collapse.js.map
│   ├── collapse.metadata.json
│   ├── collapse.module.d.ts
│   ├── collapse.module.js
│   ├── collapse.module.js.map
│   └── collapse.module.metadata.json
├── datepicker
│   ├── datepicker-config.d.ts
│   ├── datepicker-config.js
│   ├── datepicker-config.js.map
│   ├── datepicker-config.metadata.json
│   ├── datepicker-day-template-context.d.ts
│   ├── datepicker-day-template-context.js
│   ├── datepicker-day-template-context.js.map
│   ├── datepicker-day-view.d.ts
│   ├── datepicker-day-view.js
│   ├── datepicker-day-view.js.map
│   ├── datepicker-day-view.metadata.json
│   ├── datepicker-i18n.d.ts
│   ├── datepicker-i18n.js
│   ├── datepicker-i18n.js.map
│   ├── datepicker-i18n.metadata.json
│   ├── datepicker-input.d.ts
│   ├── datepicker-input.js
│   ├── datepicker-input.js.map
│   ├── datepicker-input.metadata.json
│   ├── datepicker-month-view.d.ts
│   ├── datepicker-month-view.js
│   ├── datepicker-month-view.js.map
│   ├── datepicker-month-view.metadata.json
│   ├── datepicker-navigation-select.d.ts
│   ├── datepicker-navigation-select.js
│   ├── datepicker-navigation-select.js.map
│   ├── datepicker-navigation-select.metadata.json
│   ├── datepicker-navigation.d.ts
│   ├── datepicker-navigation.js
│   ├── datepicker-navigation.js.map
│   ├── datepicker-navigation.metadata.json
│   ├── datepicker-service.d.ts
│   ├── datepicker-service.js
│   ├── datepicker-service.js.map
│   ├── datepicker-service.metadata.json
│   ├── datepicker-view-model.d.ts
│   ├── datepicker-view-model.js
│   ├── datepicker-view-model.js.map
│   ├── datepicker-view-model.metadata.json
│   ├── datepicker.d.ts
│   ├── datepicker.js
│   ├── datepicker.js.map
│   ├── datepicker.metadata.json
│   ├── datepicker.module.d.ts
│   ├── datepicker.module.js
│   ├── datepicker.module.js.map
│   ├── datepicker.module.metadata.json
│   ├── ngb-calendar.d.ts
│   ├── ngb-calendar.js
│   ├── ngb-calendar.js.map
│   ├── ngb-calendar.metadata.json
│   ├── ngb-date-parser-formatter.d.ts
│   ├── ngb-date-parser-formatter.js
│   ├── ngb-date-parser-formatter.js.map
│   ├── ngb-date-struct.d.ts
│   ├── ngb-date-struct.js
│   ├── ngb-date-struct.js.map
│   ├── ngb-date.d.ts
│   ├── ngb-date.js
│   └── ngb-date.js.map
├── dropdown
│   ├── dropdown-config.d.ts
│   ├── dropdown-config.js
│   ├── dropdown-config.js.map
│   ├── dropdown-config.metadata.json
│   ├── dropdown.d.ts
│   ├── dropdown.js
│   ├── dropdown.js.map
│   ├── dropdown.metadata.json
│   ├── dropdown.module.d.ts
│   ├── dropdown.module.js
│   ├── dropdown.module.js.map
│   └── dropdown.module.metadata.json
├── index.d.ts
├── index.js
├── index.js.map
├── index.metadata.json
├── modal
│   ├── modal-backdrop.d.ts
│   ├── modal-backdrop.js
│   ├── modal-backdrop.js.map
│   ├── modal-backdrop.metadata.json
│   ├── modal-container.d.ts
│   ├── modal-container.js
│   ├── modal-container.js.map
│   ├── modal-container.metadata.json
│   ├── modal-dismiss-reasons.d.ts
│   ├── modal-dismiss-reasons.js
│   ├── modal-dismiss-reasons.js.map
│   ├── modal-dismiss-reasons.metadata.json
│   ├── modal-ref.d.ts
│   ├── modal-ref.js
│   ├── modal-ref.js.map
│   ├── modal-ref.metadata.json
│   ├── modal-stack.d.ts
│   ├── modal-stack.js
│   ├── modal-stack.js.map
│   ├── modal-stack.metadata.json
│   ├── modal-window.d.ts
│   ├── modal-window.js
│   ├── modal-window.js.map
│   ├── modal-window.metadata.json
│   ├── modal.d.ts
│   ├── modal.js
│   ├── modal.js.map
│   ├── modal.metadata.json
│   ├── modal.module.d.ts
│   ├── modal.module.js
│   ├── modal.module.js.map
│   └── modal.module.metadata.json
├── package.json
├── pagination
│   ├── pagination-config.d.ts
│   ├── pagination-config.js
│   ├── pagination-config.js.map
│   ├── pagination-config.metadata.json
│   ├── pagination.d.ts
│   ├── pagination.js
│   ├── pagination.js.map
│   ├── pagination.metadata.json
│   ├── pagination.module.d.ts
│   ├── pagination.module.js
│   ├── pagination.module.js.map
│   └── pagination.module.metadata.json
├── popover
│   ├── popover-config.d.ts
│   ├── popover-config.js
│   ├── popover-config.js.map
│   ├── popover-config.metadata.json
│   ├── popover.d.ts
│   ├── popover.js
│   ├── popover.js.map
│   ├── popover.metadata.json
│   ├── popover.module.d.ts
│   ├── popover.module.js
│   ├── popover.module.js.map
│   └── popover.module.metadata.json
├── progressbar
│   ├── progressbar-config.d.ts
│   ├── progressbar-config.js
│   ├── progressbar-config.js.map
│   ├── progressbar-config.metadata.json
│   ├── progressbar.d.ts
│   ├── progressbar.js
│   ├── progressbar.js.map
│   ├── progressbar.metadata.json
│   ├── progressbar.module.d.ts
│   ├── progressbar.module.js
│   ├── progressbar.module.js.map
│   └── progressbar.module.metadata.json
├── rating
│   ├── rating-config.d.ts
│   ├── rating-config.js
│   ├── rating-config.js.map
│   ├── rating-config.metadata.json
│   ├── rating.d.ts
│   ├── rating.js
│   ├── rating.js.map
│   ├── rating.metadata.json
│   ├── rating.module.d.ts
│   ├── rating.module.js
│   ├── rating.module.js.map
│   └── rating.module.metadata.json
├── tabset
│   ├── tabset-config.d.ts
│   ├── tabset-config.js
│   ├── tabset-config.js.map
│   ├── tabset-config.metadata.json
│   ├── tabset.d.ts
│   ├── tabset.js
│   ├── tabset.js.map
│   ├── tabset.metadata.json
│   ├── tabset.module.d.ts
│   ├── tabset.module.js
│   ├── tabset.module.js.map
│   └── tabset.module.metadata.json
├── timepicker
│   ├── ngb-time-struct.d.ts
│   ├── ngb-time-struct.js
│   ├── ngb-time-struct.js.map
│   ├── ngb-time.d.ts
│   ├── ngb-time.js
│   ├── ngb-time.js.map
│   ├── timepicker-config.d.ts
│   ├── timepicker-config.js
│   ├── timepicker-config.js.map
│   ├── timepicker-config.metadata.json
│   ├── timepicker.d.ts
│   ├── timepicker.js
│   ├── timepicker.js.map
│   ├── timepicker.metadata.json
│   ├── timepicker.module.d.ts
│   ├── timepicker.module.js
│   ├── timepicker.module.js.map
│   └── timepicker.module.metadata.json
├── tooltip
│   ├── tooltip-config.d.ts
│   ├── tooltip-config.js
│   ├── tooltip-config.js.map
│   ├── tooltip-config.metadata.json
│   ├── tooltip.d.ts
│   ├── tooltip.js
│   ├── tooltip.js.map
│   ├── tooltip.metadata.json
│   ├── tooltip.module.d.ts
│   ├── tooltip.module.js
│   ├── tooltip.module.js.map
│   └── tooltip.module.metadata.json
├── typeahead
│   ├── highlight.d.ts
│   ├── highlight.js
│   ├── highlight.js.map
│   ├── highlight.metadata.json
│   ├── typeahead-config.d.ts
│   ├── typeahead-config.js
│   ├── typeahead-config.js.map
│   ├── typeahead-config.metadata.json
│   ├── typeahead-window.d.ts
│   ├── typeahead-window.js
│   ├── typeahead-window.js.map
│   ├── typeahead-window.metadata.json
│   ├── typeahead.d.ts
│   ├── typeahead.js
│   ├── typeahead.js.map
│   ├── typeahead.metadata.json
│   ├── typeahead.module.d.ts
│   ├── typeahead.module.js
│   ├── typeahead.module.js.map
│   └── typeahead.module.metadata.json
└── util
    ├── popup.d.ts
    ├── popup.js
    ├── popup.js.map
    ├── positioning.d.ts
    ├── positioning.js
    ├── positioning.js.map
    ├── triggers.d.ts
    ├── triggers.js
    ├── triggers.js.map
    ├── util.d.ts
    ├── util.js
    ├── util.js.map
    └── util.metadata.json

18 directories, 287 files
4

2 回答 2

6

Positioning不是公共 API 的一部分,您根本无法导入(有意)未导出的内容@ng-bootstrap/ng-bootstrap您可以在此处查看公共 API 界面:https ://github.com/ng-bootstrap/ng-bootstrap/blob/master/src/index.ts

可以尝试在https://github.com/ng-bootstrap/ng-bootstrap/issues打开一个问题并要求Positioning导出服务,但要准备好为此提供一个非常好的用例 - 该项目相当对其公共 API 持保守态度,并打算只公开外部真正需要的东西。

于 2016-11-15T21:24:04.833 回答
1

calendarTooltip.directive.ts没有export class从句。修复错误或使用 angular-cli 生成样板指令。

您可以使用此答案中的参考Angular-cli component generator generate additional files

于 2016-11-15T21:08:07.830 回答