ruby-on-rails Openproject,如何修复-提供程序从`BrowserModule`已经被加载?

z6psavjg  于 4个月前  发布在  Ruby
关注(0)|答案(1)|浏览(48)

我正在使用openproject,当前的package.json就像

{
  "name": "openproject-frontend",
  "repository": "https://github.com/opf/openproject",
  "license": "GPLv3",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "@angular-devkit/build-angular": "^14.2.5",
    "@angular-eslint/builder": "^13.2.1",
    "@angular-eslint/eslint-plugin": "^13.2.1",
    "@angular-eslint/eslint-plugin-template": "^13.2.1",
    "@angular-eslint/schematics": "13.2.1",
    "@angular-eslint/template-parser": "^13.2.1",
    "@angular/language-service": "14.0.2",
    "@babel/core": "^7.18.5",
    "@compodoc/compodoc": "^1.1.23",
    "@html-eslint/eslint-plugin": "^0.13.1",
    "@html-eslint/parser": "^0.13.1",
    "@jsdevtools/coverage-istanbul-loader": "3.0.5",
    "@storybook/addon-actions": "^6.5.10",
    "@storybook/addon-essentials": "^6.5.10",
    "@storybook/addon-interactions": "^6.5.10",
    "@storybook/addon-knobs": "^6.4.0",
    "@storybook/addon-links": "^6.5.10",
    "@storybook/angular": "^6.5.10",
    "@storybook/builder-webpack5": "^6.5.10",
    "@storybook/manager-webpack5": "^6.5.10",
    "@storybook/mdx2-csf": "^0.0.3",
    "@storybook/preset-scss": "^1.0.3",
    "@storybook/testing-library": "^0.0.13",
    "@types/chart.js": "^2.9.20",
    "@types/codemirror": "5.60.5",
    "@types/dragula": "^3.7.0",
    "@types/hammerjs": "^2.0.36",
    "@types/jasmine": "~3.6.0",
    "@types/jquery": "^3.3.33",
    "@types/jqueryui": "^1.12.10",
    "@types/lodash": "^4.14.149",
    "@types/mime": "^2.0.3",
    "@types/mousetrap": "^1.6.3",
    "@types/pako": "^1.0.1",
    "@types/resize-observer-browser": "^0.1.4",
    "@types/swagger-ui": "^3.47.0",
    "@types/urijs": "^1.19.6",
    "@types/uuid": "^8.3.4",
    "@types/webpack-env": "^1.16.0",
    "@typescript-eslint/eslint-plugin": "4.23.0",
    "@typescript-eslint/parser": "4.23.0",
    "babel-loader": "^8.2.5",
    "browserslist": "^4.9.1",
    "codelyzer": "^6.0.0",
    "css-loader": "^6.7.1",
    "eslint": "^7.26.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-airbnb-typescript": "^12.3.1",
    "eslint-plugin-change-detection-strategy": "^0.1.1",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-jasmine": "^4.1.2",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-react": "^7.24.0",
    "eslint-plugin-react-hooks": "^4.2.0",
    "eslint-plugin-storybook": "^0.6.4",
    "esprint": "^3.1.0",
    "jasmine-core": "~3.6.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.3.16",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~3.3.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "karma-spec-reporter": "^0.0.32",
    "optimist": "^0.6.1",
    "raw-loader": "^4.0.2",
    "sass": "^1.52.3",
    "sass-loader": "^13.0.0",
    "source-map-explorer": "^2.5.2",
    "storybook-addon-designs": "^6.3.1",
    "style-loader": "^3.3.1",
    "theo": "^8.1.5",
    "ts-node": "~8.3.0",
    "typescript": "~4.7.4",
    "webpack-bundle-analyzer": "^4.4.2"
  },
  "dependencies": {
    "@angular/animations": "^14.2.5",
    "@angular/cdk": "^14.2.4",
    "@angular/cli": "^14.2.5",
    "@angular/common": "^14.2.5",
    "@angular/compiler": "^14.2.5",
    "@angular/compiler-cli": "^14.2.5",
    "@angular/core": "^14.2.5",
    "@angular/forms": "^14.2.5",
    "@angular/platform-browser": "^14.2.5",
    "@angular/platform-browser-dynamic": "^14.2.5",
    "@angular/router": "^14.2.5",
    "@appsignal/javascript": "^1.3.23",
    "@appsignal/plugin-breadcrumbs-console": "^1.1.24",
    "@appsignal/plugin-breadcrumbs-network": "^1.1.21",
    "@datorama/akita": "^6.2.0",
    "@fullcalendar/angular": "5.10.1",
    "@fullcalendar/common": "5.10.1",
    "@fullcalendar/core": "5.10.1",
    "@fullcalendar/daygrid": "5.10.1",
    "@fullcalendar/interaction": "5.10.1",
    "@fullcalendar/resource-common": "^5.10.1",
    "@fullcalendar/resource-timeline": "5.10.1",
    "@fullcalendar/timegrid": "5.10.1",
    "@kolkov/ngx-gallery": "^1.0.11",
    "@ng-select/ng-option-highlight": "0.0.5",
    "@ng-select/ng-select": "^4.0.4",
    "@ngneat/content-loader": "^6.1.0",
    "@ngx-formly/core": "^5.10.19",
    "@uirouter/angular": "^9.1.0",
    "@uirouter/core": "^6.0.8",
    "@uirouter/rx": "^0.6.5",
    "@w11k/ngx-componentdestroyed": "^5.0.2",
    "@xeokit/xeokit-bim-viewer": "2.3.10",
    "autoprefixer": "^9.6.1",
    "byte-base64": "^1.1.0",
    "cdk-drag-scroll": "^0.0.6",
    "chart.js": "2.9.4",
    "chartjs-plugin-datalabels": "^0.6.0",
    "codemirror": "^5.62.0",
    "copy-text-to-clipboard": "^3.0.0",
    "core-js": "^3.2.1",
    "crossvent": "^1.5.4",
    "dom-autoscroller": "^2.2.8",
    "dom-plane": "^1.0.2",
    "dragula": "^3.5.2",
    "expose-loader": "^0.7.5",
    "flatpickr": "^4.6.13",
    "fuse.js": "^3.4.5",
    "glob": "^7.1.4",
    "hammerjs": "^2.0.8",
    "jquery": "^3.5.1",
    "jquery-ui": "1.13.2",
    "jquery-ujs": "^1.2.2",
    "jquery.caret": "^0.3.1",
    "json5": "^2.1.0",
    "lodash": "^4.17.19",
    "mark.js": "^8.11.0",
    "mime": "^2.5.2",
    "moment": "^2.29.4",
    "moment-timezone": "^0.5.35",
    "mousetrap": "~1.6.3",
    "ng-dynamic-component": "^6.0.0",
    "ng2-charts": "^2.3.1",
    "ng2-dragula": "^2.1.1",
    "ngx-cookie-service": "^14.0.0",
    "observable-array": "0.0.4",
    "pako": "^2.0.3",
    "qr-creator": "^1.0.0",
    "reactivestates": "2.0.1",
    "reflect-metadata": "^0.1.13",
    "rxjs": "^6.6.6",
    "screenfull": "^4.2.1",
    "swagger-ui": "^4.1.3",
    "tablesorter": "^2.31.3",
    "ts-action": "^11.0.0",
    "ts-action-operators": "^9.1.2",
    "typedjson": "^1.5.1",
    "urijs": "^1.19.11",
    "uuid": "^8.3.2",
    "zone.js": "~0.11.4"
  },
  "optionalDependencies": {
    "fsevents": "*"
  },
  "scripts": {
    "analyze": "ng build --configuration production --stats-json && webpack-bundle-analyzer -h 0.0.0.0 -p 9999 ../public/assets/frontend/stats.json",
    "build": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --configuration production --named-chunks --source-map",
    "build:watch": "node --max_old_space_size=4096 ./node_modules/@angular/cli/bin/ng build --watch --named-chunks",
    "tokens:generate": "theo src/app/spot/styles/tokens/tokens.yml --transform web --format sass,json --dest src/app/spot/styles/tokens/dist",
    "icon-font:generate": "node ./src/app/spot/icon-font/generate.js ./src/app/spot/icon-font",
    "serve": "NG_PERSISTENT_BUILD_CACHE=1 node --max_old_space_size=8096 ./node_modules/@angular/cli/bin/ng serve --host 0.0.0.0 --public-host http://localhost:4200",
    "serve:test": "NG_PERSISTENT_BUILD_CACHE=1 node --max_old_space_size=8096 ./node_modules/@angular/cli/bin/ng serve --host 0.0.0.0 --disable-host-check --public-host http://frontend-test:4200",
    "test": "ng test --watch=false",
    "test:watch": "ng test --watch=true",
    "lint": "esprint check",
    "lint:fix": "esprint check --fix",
    "lint:eslint": "eslint",
    "generate-typings": "tsc -d -p src/tsconfig.app.json",
    "docs:json": "compodoc -p ./tsconfig.base.json -e json -d .",
    "storybook:serve": "npm run docs:json && start-storybook -p 6006 --no-manager-cache",
    "storybook:build": "npm run docs:json && build-storybook"
  }
}

字符串
现在Boards页面是空白的,并得到控制台错误,如,

Transition Rejection($id: 0 type: 6, message: The transition errored, detail: Error: Providers from the `BrowserModule` have already been loaded. If you need access to common directives such as NgIf and NgFor, import the `CommonModule` instead.)
$defaultErrorHandler @ stateService.js:33
(anonymous) @ stateService.js:365
invoke @ zone.js:372
onInvoke @ core.mjs:26250
invoke @ zone.js:371
run @ zone.js:134
(anonymous) @ zone.js:1275
invokeTask @ zone.js:406
onInvokeTask @ core.mjs:26237
invokeTask @ zone.js:405
runTask @ zone.js:178
drainMicroTaskQueue @ zone.js:585
Promise.then (async)
nativeScheduleMicroTask @ zone.js:561
scheduleMicroTask @ zone.js:572
scheduleTask @ zone.js:396
onScheduleTask @ zone.js:283
scheduleTask @ zone.js:386
scheduleTask @ zone.js:221
scheduleMicroTask @ zone.js:241
scheduleResolveOrReject @ zone.js:1265
resolvePromise @ zone.js:1202
(anonymous) @ zone.js:1118
(anonymous) @ zone.js:1134
webpackJsonpCallback @ jsonp chunk loading:77

Error: Providers from the `BrowserModule` have already been loaded. If you need access to common directives such as NgIf and NgFor, import the `CommonModule` instead.
    at new BrowserModule (platform-browser.mjs:1139:19)
    at Object.BrowserModule_Factory [as useFactory] (platform-browser.mjs:1162:1)
    at Object.factory (core.mjs:8792:38)
    at R3Injector.hydrate (core.mjs:8705:35)
    at R3Injector.get (core.mjs:8593:33)
    at injectInjectorOnly (core.mjs:4761:33)
    at ɵɵinject (core.mjs:4765:12)
    at useValue (core.mjs:8385:65)
    at R3Injector.resolveInjectorInitializers (core.mjs:8642:17)
    at new NgModuleRef (core.mjs:21625:26)


主板组件在global-dynamic-components.const.ts内部调用

import { OptionalBootstrapDefinition } from 'core-app/core/setup/globals/dynamic-bootstrapper';
import { appBaseSelector, ApplicationBaseComponent } from 'core-app/core/routing/base/application-base.component';
import {
  EmbeddedTablesMacroComponent,
  wpEmbeddedTableMacroSelector,
} from 'core-app/features/work-packages/components/wp-table/embedded/embedded-tables-macro.component';
import {
  ColorsAutocompleterComponent,
  colorsAutocompleterSelector,
} from 'core-app/shared/components/colors/colors-autocompleter.component';
import {
  ZenModeButtonComponent,
  zenModeComponentSelector,
} from 'core-app/features/work-packages/components/wp-buttons/zen-mode-toggle-button/zen-mode-toggle-button.component';
import {
  OpAttachmentsComponent,
  attachmentsSelector,
} from 'core-app/shared/components/attachments/attachments.component';
import {
  UserAutocompleterComponent,
  usersAutocompleterSelector,
} from 'core-app/shared/components/autocompleter/user-autocompleter/user-autocompleter.component';
import {
  GlobalSearchWorkPackagesComponent,
  globalSearchWorkPackagesSelector,
} from 'core-app/core/global_search/global-search-work-packages.component';
import {
  CustomDateActionAdminComponent,
  customDateActionAdminSelector,
} from 'core-app/features/work-packages/components/wp-custom-actions/date-action/custom-date-action-admin.component';
import { BoardsMenuComponent, boardsMenuSelector } from 'core-app/features/boards/boards-sidebar/boards-menu.component';
import {
  GlobalSearchWorkPackagesEntryComponent,
  globalSearchWorkPackagesSelectorEntry,
} from 'core-app/core/global_search/global-search-work-packages-entry.component';
import {
  ToastsContainerComponent,
  toastsContainerSelector,
} from 'core-app/shared/components/toaster/toasts-container.component';
import {
  OpSidemenuComponent,
  sidemenuSelector,
} from 'core-app/shared/components/sidemenu/sidemenu.component';
import {
  CkeditorAugmentedTextareaComponent,
  ckeditorAugmentedTextareaSelector,
} from 'core-app/shared/components/editor/components/ckeditor-augmented-textarea/ckeditor-augmented-textarea.component';
import {
  PersistentToggleComponent,
  persistentToggleSelector,
} from 'core-app/shared/components/persistent-toggle/persistent-toggle.component';
import {
  OpPrincipalComponent,
  principalSelector,
} from 'core-app/shared/components/principal/principal.component';
import {
  HideSectionLinkComponent,
  hideSectionLinkSelector,
} from 'core-app/shared/components/hide-section/hide-section-link/hide-section-link.component';
import {
  ShowSectionDropdownComponent,
  showSectionDropdownSelector,
} from 'core-app/shared/components/hide-section/show-section-dropdown.component';
import {
  AddSectionDropdownComponent,
  addSectionDropdownSelector,
} from 'core-app/shared/components/hide-section/add-section-dropdown/add-section-dropdown.component';
import {
  AutocompleteSelectDecorationComponent,
  autocompleteSelectDecorationSelector,
} from 'core-app/shared/components/autocompleter/autocomplete-select-decoration/autocomplete-select-decoration.component';
import {
  ContentTabsComponent,
  contentTabsSelector,
} from 'core-app/shared/components/tabs/content-tabs/content-tabs.component';
import {
  CopyToClipboardDirective,
  copyToClipboardSelector,
} from 'core-app/shared/components/copy-to-clipboard/copy-to-clipboard.directive';
import {
  GlobalSearchInputComponent,
  globalSearchSelector,
} from 'core-app/core/global_search/input/global-search-input.component';
import {
  CopyUrlComponent,
  copyUrlSelector,
} from 'core-app/features/share-url/share-url.component';
import {
  collapsibleSectionAugmentSelector,
  CollapsibleSectionComponent,
} from 'core-app/shared/components/collapsible-section/collapsible-section.component';
import {
  OpHeaderProjectSelectComponent,
  headerProjectSelectSelector,
} from 'core-app/shared/components/header-project-select/header-project-select.component';
import {
  ProjectAutocompleterComponent,
  projectsAutocompleterSelector,
} from 'core-app/shared/components/autocompleter/project-autocompleter/project-autocompleter.component';
import {
  RemoteFieldUpdaterComponent,
  remoteFieldUpdaterSelector,
} from 'core-app/shared/components/remote-field-updater/remote-field-updater.component';
import {
  WorkPackageOverviewGraphComponent,
  wpOverviewGraphSelector,
} from 'core-app/shared/components/work-package-graphs/overview/wp-overview-graph.component';
import {
  opViewSelectSelector,
  ViewSelectComponent,
} from 'core-app/shared/components/op-view-select/op-view-select.component';
import {
  GlobalSearchTitleComponent,
  globalSearchTitleSelector,
} from 'core-app/core/global_search/title/global-search-title.component';
import {
  GlobalSearchTabsComponent,
  globalSearchTabsSelector,
} from 'core-app/core/global_search/tabs/global-search-tabs.component';
import {
  MembersAutocompleterComponent,
  membersAutocompleterSelector,
} from 'core-app/shared/components/autocompleter/members-autocompleter/members-autocompleter.component';
import {
  TriggerActionsEntryComponent,
  triggerActionsEntryComponentSelector,
} from 'core-app/shared/components/time_entries/edit/trigger-actions-entry.component';
import {
  BacklogsPageComponent,
  backlogsPageComponentSelector,
} from 'core-app/features/backlogs/backlogs-page/backlogs-page.component';
import {
  attributeValueMacro,
  AttributeValueMacroComponent,
} from 'core-app/shared/components/fields/macros/attribute-value-macro.component';
import {
  attributeLabelMacro,
  AttributeLabelMacroComponent,
} from 'core-app/shared/components/fields/macros/attribute-label-macro.component';
import {
  AttributeHelpTextComponent,
  attributeHelpTextSelector,
} from 'core-app/shared/components/attribute-help-texts/attribute-help-text.component';
import {
  quickInfoMacroSelector,
  WorkPackageQuickinfoMacroComponent,
} from 'core-app/shared/components/fields/macros/work-package-quickinfo-macro.component';
import {
  SpotSwitchComponent,
  spotSwitchSelector,
} from 'core-app/spot/components/switch/switch.component';
import { BackupComponent, backupSelector } from 'core-app/core/setup/globals/components/admin/backup.component';
import {
  EnterpriseBaseComponent,
  enterpriseBaseSelector,
} from 'core-app/features/enterprise/enterprise-base.component';
import {
  FreeTrialButtonComponent,
  freeTrialButtonSelector,
} from 'core-app/features/enterprise/free-trial-button/free-trial-button.component';
import {
  EnterpriseBannerComponent,
  enterpriseBannerSelector,
} from 'core-app/shared/components/enterprise-banner/enterprise-banner.component';
import {
  EnterprisePageComponent,
  enterprisePageSelector,
} from 'core-app/shared/components/enterprise-page/enterprise-page.component';
import {
  EEActiveSavedTrialComponent,
  enterpriseActiveSavedTrialSelector,
} from 'core-app/features/enterprise/enterprise-active-trial/ee-active-saved-trial.component';
import {
  NoResultsComponent,
  noResultsSelector,
} from 'app/shared/components/no-results/no-results.component';
import {
  HomescreenNewFeaturesBlockComponent,
  homescreenNewFeaturesBlockSelector,
} from 'core-app/features/homescreen/blocks/new-features.component';
import { MainMenuToggleComponent, mainMenuToggleSelector } from 'core-app/core/main-menu/main-menu-toggle.component';
import {
  MainMenuResizerComponent,
  mainMenuResizerSelector,
} from 'core-app/shared/components/resizer/resizer/main-menu-resizer.component';
import {
  adminTypeFormConfigurationSelector,
  TypeFormConfigurationComponent,
} from 'core-app/features/admin/types/type-form-configuration.component';
import {
  EditableQueryPropsComponent,
  editableQueryPropsSelector,
} from 'core-app/features/admin/editable-query-props/editable-query-props.component';
import {
  InAppNotificationBellComponent,
  opInAppNotificationBellSelector,
} from 'core-app/features/in-app-notifications/bell/in-app-notification-bell.component';
import {
  IanMenuComponent,
  ianMenuSelector,
} from 'core-app/features/in-app-notifications/center/menu/menu.component';
import {
  opTeamPlannerSidemenuSelector,
  TeamPlannerSidemenuComponent,
} from 'core-app/features/team-planner/team-planner/sidemenu/team-planner-sidemenu.component';
import {
  CalendarSidemenuComponent,
  opCalendarSidemenuSelector,
} from 'core-app/features/calendar/sidemenu/calendar-sidemenu.component';
import { OpModalOverlayComponent, opModalOverlaySelector } from 'core-app/shared/components/modal/modal-overlay.component';

export const globalDynamicComponents:OptionalBootstrapDefinition[] = [
  { selector: appBaseSelector, cls: ApplicationBaseComponent },
  { selector: attributeHelpTextSelector, cls: AttributeHelpTextComponent },
  { selector: wpEmbeddedTableMacroSelector, cls: EmbeddedTablesMacroComponent, embeddable: true },
  { selector: colorsAutocompleterSelector, cls: ColorsAutocompleterComponent },
  { selector: zenModeComponentSelector, cls: ZenModeButtonComponent },
  { selector: attachmentsSelector, cls: OpAttachmentsComponent, embeddable: true },
  { selector: usersAutocompleterSelector, cls: UserAutocompleterComponent },
  { selector: membersAutocompleterSelector, cls: MembersAutocompleterComponent },
  { selector: globalSearchTabsSelector, cls: GlobalSearchTabsComponent },
  { selector: globalSearchWorkPackagesSelector, cls: GlobalSearchWorkPackagesComponent },
  { selector: homescreenNewFeaturesBlockSelector, cls: HomescreenNewFeaturesBlockComponent },
  { selector: customDateActionAdminSelector, cls: CustomDateActionAdminComponent },
  { selector: boardsMenuSelector, cls: BoardsMenuComponent },
  { selector: globalSearchWorkPackagesSelectorEntry, cls: GlobalSearchWorkPackagesEntryComponent },
  { selector: toastsContainerSelector, cls: ToastsContainerComponent },
  { selector: sidemenuSelector, cls: OpSidemenuComponent },
  { selector: adminTypeFormConfigurationSelector, cls: TypeFormConfigurationComponent },
  { selector: ckeditorAugmentedTextareaSelector, cls: CkeditorAugmentedTextareaComponent, embeddable: true },
  { selector: persistentToggleSelector, cls: PersistentToggleComponent },
  { selector: principalSelector, cls: OpPrincipalComponent },
  { selector: hideSectionLinkSelector, cls: HideSectionLinkComponent },
  { selector: showSectionDropdownSelector, cls: ShowSectionDropdownComponent },
  { selector: addSectionDropdownSelector, cls: AddSectionDropdownComponent },
  { selector: autocompleteSelectDecorationSelector, cls: AutocompleteSelectDecorationComponent },
  { selector: contentTabsSelector, cls: ContentTabsComponent },
  { selector: globalSearchTitleSelector, cls: GlobalSearchTitleComponent },
  { selector: copyToClipboardSelector, cls: CopyToClipboardDirective },
  { selector: mainMenuResizerSelector, cls: MainMenuResizerComponent },
  { selector: mainMenuToggleSelector, cls: MainMenuToggleComponent },
  { selector: globalSearchSelector, cls: GlobalSearchInputComponent },
  { selector: copyUrlSelector, cls: CopyUrlComponent },
  { selector: collapsibleSectionAugmentSelector, cls: CollapsibleSectionComponent },
  { selector: enterpriseBannerSelector, cls: EnterpriseBannerComponent },
  { selector: enterprisePageSelector, cls: EnterprisePageComponent },
  { selector: noResultsSelector, cls: NoResultsComponent },
  { selector: enterpriseBaseSelector, cls: EnterpriseBaseComponent },
  { selector: freeTrialButtonSelector, cls: FreeTrialButtonComponent },
  { selector: enterpriseActiveSavedTrialSelector, cls: EEActiveSavedTrialComponent },
  { selector: headerProjectSelectSelector, cls: OpHeaderProjectSelectComponent },
  { selector: projectsAutocompleterSelector, cls: ProjectAutocompleterComponent },
  { selector: remoteFieldUpdaterSelector, cls: RemoteFieldUpdaterComponent },
  { selector: wpOverviewGraphSelector, cls: WorkPackageOverviewGraphComponent },
  { selector: opViewSelectSelector, cls: ViewSelectComponent },
  { selector: opTeamPlannerSidemenuSelector, cls: TeamPlannerSidemenuComponent },
  { selector: opCalendarSidemenuSelector, cls: CalendarSidemenuComponent },
  { selector: triggerActionsEntryComponentSelector, cls: TriggerActionsEntryComponent, embeddable: true },
  { selector: backlogsPageComponentSelector, cls: BacklogsPageComponent },
  { selector: attributeValueMacro, cls: AttributeValueMacroComponent, embeddable: true },
  { selector: attributeLabelMacro, cls: AttributeLabelMacroComponent, embeddable: true },
  { selector: quickInfoMacroSelector, cls: WorkPackageQuickinfoMacroComponent, embeddable: true },
  { selector: editableQueryPropsSelector, cls: EditableQueryPropsComponent },
  { selector: spotSwitchSelector, cls: SpotSwitchComponent },
  { selector: backupSelector, cls: BackupComponent },
  { selector: opInAppNotificationBellSelector, cls: InAppNotificationBellComponent },
  { selector: ianMenuSelector, cls: IanMenuComponent },
  { selector: opModalOverlaySelector, cls: OpModalOverlayComponent },
];


openproject-boards.module.ts

import { NgModule } from '@angular/core';
import { OPSharedModule } from 'core-app/shared/shared.module';
import { OpenprojectWorkPackagesModule } from 'core-app/features/work-packages/openproject-work-packages.module';
import { OpenprojectModalModule } from 'core-app/shared/components/modal/modal.module';
import { UIRouterModule } from '@uirouter/angular';
import { BoardListComponent } from 'core-app/features/boards/board/board-list/board-list.component';
import { BoardsRootComponent } from 'core-app/features/boards/boards-root/boards-root.component';
import { BoardInlineAddAutocompleterComponent } from 'core-app/features/boards/board/inline-add/board-inline-add-autocompleter.component';
import { BoardsToolbarMenuDirective } from 'core-app/features/boards/board/toolbar-menu/boards-toolbar-menu.directive';
import { BoardConfigurationModalComponent } from 'core-app/features/boards/board/configuration-modal/board-configuration.modal';
import { BoardsIndexPageComponent } from 'core-app/features/boards/index-page/boards-index-page.component';
import { BoardsMenuComponent } from 'core-app/features/boards/boards-sidebar/boards-menu.component';
import { NewBoardModalComponent } from 'core-app/features/boards/new-board-modal/new-board-modal.component';
import { AddListModalComponent } from 'core-app/features/boards/board/add-list-modal/add-list-modal.component';
import { BoardHighlightingTabComponent } from 'core-app/features/boards/board/configuration-modal/tabs/highlighting-tab.component';
import { AddCardDropdownMenuDirective } from 'core-app/features/boards/board/add-card-dropdown/add-card-dropdown-menu.directive';
import { BoardFilterComponent } from 'core-app/features/boards/board/board-filter/board-filter.component';
import { DragScrollModule } from 'cdk-drag-scroll';
import { BoardListMenuComponent } from 'core-app/features/boards/board/board-list/board-list-menu.component';
import { VersionBoardHeaderComponent } from 'core-app/features/boards/board/board-actions/version/version-board-header.component';
import { DynamicModule } from 'ng-dynamic-component';
import { BOARDS_ROUTES, uiRouterBoardsConfiguration } from 'core-app/features/boards/openproject-boards.routes';
import { BoardPartitionedPageComponent } from 'core-app/features/boards/board/board-partitioned-page/board-partitioned-page.component';
import { BoardListContainerComponent } from 'core-app/features/boards/board/board-partitioned-page/board-list-container.component';
import { BoardsMenuButtonComponent } from 'core-app/features/boards/board/toolbar-menu/boards-menu-button.component';
import { AssigneeBoardHeaderComponent } from 'core-app/features/boards/board/board-actions/assignee/assignee-board-header.component';
import { SubprojectBoardHeaderComponent } from 'core-app/features/boards/board/board-actions/subproject/subproject-board-header.component';
import { SubtasksBoardHeaderComponent } from 'core-app/features/boards/board/board-actions/subtasks/subtasks-board-header.component';
import { StatusBoardHeaderComponent } from 'core-app/features/boards/board/board-actions/status/status-board-header.component';
import { OpenprojectAutocompleterModule } from 'core-app/shared/components/autocompleter/openproject-autocompleter.module';
import { TileViewComponent } from './tile-view/tile-view.component';

@NgModule({
  imports: [
    OPSharedModule,
    OpenprojectWorkPackagesModule,
    OpenprojectModalModule,
    DragScrollModule,
    OpenprojectAutocompleterModule,

    // Dynamic Module for actions
    DynamicModule.withComponents([VersionBoardHeaderComponent]),

    // Routes for /boards
    UIRouterModule.forChild({
      states: BOARDS_ROUTES,
      config: uiRouterBoardsConfiguration,
    }),
  ],
  declarations: [
    BoardsIndexPageComponent,
    BoardPartitionedPageComponent,
    BoardListContainerComponent,
    BoardListComponent,
    BoardsRootComponent,
    BoardInlineAddAutocompleterComponent,
    BoardsMenuComponent,
    BoardHighlightingTabComponent,
    BoardConfigurationModalComponent,
    BoardsToolbarMenuDirective,
    BoardsMenuButtonComponent,
    NewBoardModalComponent,
    AddListModalComponent,
    AddCardDropdownMenuDirective,
    BoardListMenuComponent,
    BoardFilterComponent,
    VersionBoardHeaderComponent,
    AssigneeBoardHeaderComponent,
    SubprojectBoardHeaderComponent,
    SubtasksBoardHeaderComponent,
    StatusBoardHeaderComponent,
    TileViewComponent,
  ],
})
export class OpenprojectBoardsModule {
}


请帮助我修复这个错误。

1zmg4dgp

1zmg4dgp1#

在整个项目中进行全局搜索,确保browserModule仅在app.module.ts中使用,如果在其他地方使用,请将其删除并替换为@angular/common中的CommonModule

相关问题