合并声明“DepartmentListComponent”中的单个声明必须全部导出或全部为 local.ts(2395) 路由组件

Posted

技术标签:

【中文标题】合并声明“DepartmentListComponent”中的单个声明必须全部导出或全部为 local.ts(2395) 路由组件【英文标题】:Individual declarations in merged declaration 'DepartmentListComponent' must be all exported or all local.ts(2395) Routing components 【发布时间】:2020-02-28 09:51:34 【问题描述】:

我对这段代码有疑问,我完全按照视频教程(我正在学习)进行操作,但它不起作用并需要一些声明。指南中编写的代码有可能采用一些较旧的方法吗?没有服务的硬代码。

app-routing.module.ts

import  NgModule  from '@angular/core';
import  Routes, RouterModule  from '@angular/router';
import  DepartmentListComponent  from './department-list/department-list.component';
import  EmployeeListComponent  from './employee-list/employee-list.component';


const routes: Routes = [
   path: 'departments', component: DepartmentListComponent ,
   path: 'employees', component: EmployeeListComponent 

];

@NgModule(
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
)
export class AppRoutingModule  
export const routingComponents  [DepartmentListComponent, EmployeeListComponent ]

app.module.ts

import  BrowserModule  from '@angular/platform-browser';
import  NgModule  from '@angular/core';

import  AppRoutingModule, routingComponents  from './app-routing.module';
import  AppComponent  from './app.component';


@NgModule(
  declarations: [
    AppComponent,
    routingComponents
  ],
  imports: [
    BrowserModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
)
export class AppModule  

app.component.html

<h1> Welocme in routing</h1>

<router-outlet></router-outlet>

我需要查看正在运行的应用程序,其 url 形式为 http://localhost:4200/employees 和 http://localhost:4200/departments。 我是初学者,所以请谅解。

【问题讨论】:

你遇到了什么错误 Cannot GET / - 在浏览器中导入声明与“DepartmentListComponent”的本​​地声明冲突。合并声明“DepartmentListComponent”中的各个声明必须全部导出或全部本地。合并声明“EmployeeListComponent”中的各个声明必须全部导出或全部本地。导入声明与“EmployeeListComponent”的本​​地声明冲突。在声明之前使用的块范围变量“DepartmentListComponent”。在声明之前使用的块范围变量“EmployeeListComponent”。 ',' 预期的。 - 这很奇怪;p 合并声明“DepartmentListComponent”中的单个声明必须全部导出或全部本地。合并声明“EmployeeListComponent”中的单个声明必须全部导出或全部本地。 看起来app-routing.module.ts 中的最后一行导致了错误。尝试从app-routing.module.ts 文件中删除routingComponents 导出并在app.module.ts 中显式导入它们 有没有办法从它们数组中导入一个包中的所有组件? 【参考方案1】:

同样的问题,更奇怪的解决方案: 删除导出行(最后一行)。 编译(通常没有错误) 再次添加最后一行。 编译... 完毕。 不要问我为什么。我也是学习打字稿和 Angular 的初学者;-)

【讨论】:

请使可以被视为解决所描述问题的部分更加明显。我相信有一个,但在目前的措辞中,这可能会被误认为是“我也是”。 @Yunnosch 我不认为“将其关闭再打开”无论如何都是一个答案。 VTD。 这不是“好不好回答”的问题。这是关于不因甚至不尝试回答而被标记。 @miken32 我接受这是一个诚实的回答尝试。 @miken32 我在这里做同样的步骤,在Webstorm IDE上搜索同样的错误并且工作正常,绝对是一个正确的答案。【参考方案2】:

您在此文件中导出DepartmentListComponent,该文件在本地导入到同一文件模块中。

【讨论】:

【参考方案3】:

我在使用 Webstorm 时遇到了同样的问题,重新启动 + 缓存清理为我解决了这个问题。

【讨论】:

【参考方案4】:

在 intellij IDE 上,我发现删除导出并再次添加它(在实例之前,而不是在类之前)有效。

我有

// x.ts
export class X 
// y.ts
import X from "./x.ts"
export const instance = new X();  // the export to be removed in my case

【讨论】:

【参考方案5】:

我在新创建和导出的界面上遇到了同样的错误。在接口名称中添加“接口”后缀为我解决了这个问题。

变化:

export interface SomeThing 

收件人:

export interface SomeThingInterface 

【讨论】:

【参考方案6】:

您不能将import 重新导出为const。所以

export const routingComponents  [DepartmentListComponent, EmployeeListComponent ]

应该是

export const routingComponents = [DepartmentListComponent, EmployeeListComponent]

export  DepartmentListComponent, EmployeeListComponent 

【讨论】:

【参考方案7】:

当我们importexport在同一个文件中的同一个模块时,会抛出这个错误。

检查所有导入并确保它们不是从同一个文件中导出的。

【讨论】:

【参考方案8】:

当我不小心从同一个文件中导出同一个界面两次时,我收到了这个错误消息。

【讨论】:

以上是关于合并声明“DepartmentListComponent”中的单个声明必须全部导出或全部为 local.ts(2395) 路由组件的主要内容,如果未能解决你的问题,请参考以下文章

使用声明合并普遍修补接口

合并/检索打字稿声明文件

TypeScript 声明合并 - 更改属性类型

合并声明“DepartmentListComponent”中的单个声明必须全部导出或全部为 local.ts(2395) 路由组件

如何在不采用其中更改的情况下将 git 分支声明为合并?

SSIS 合并声明日期时间未更新