Angular2 模块没有导出成员
Angular2 module has no exported member
对于在 Angular2 中进行身份验证的网站,我想在主应用程序组件中使用身份验证子模块的一个组件。但是,我不断收到以下错误:
app/app.component.ts(3,10): error TS2305: Module '"<dir>/app/auth/auth.module"' has no exported member 'SigninComponent'.
即使在导出 SigninComponent 之后。
工程文件夹结构如下图:
app/auth/auth.module.ts:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { RegisterComponent } from './components/register.component';
import { SigninComponent } from './components/signin.component';
import { HomeComponent } from './components/home.component';
import { AuthService } from './services/auth.service';
import { AuthHttp } from './services/auth-http';
@NgModule({
imports: [
CommonModule,
FormsModule
],
declarations: [
RegisterComponent,
SigninComponent,
HomeComponent
],
providers: [
AuthService,
AuthHttp
],
exports: [
RegisterComponent,
SigninComponent,
HomeComponent
]
})
export class AuthModule {}
app/auth/components/signin.component.ts:
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '../services/auth.service';
@Component({
selector: 'signin',
templateUrl: 'app/auth/signin.html'
})
export class SigninComponent {
...
}
app/app.component.ts:
import { Component, OnInit } from '@angular/core';
import { Router, RouterOutlet } from '@angular/router';
import { SigninComponent, RegisterComponent } from './auth/auth.module';
import { AuthHttp } from './auth/services/auth-http';
import { AuthService } from './auth/services/auth.service';
@Component({
selector: 'myapp',
templateUrl: 'app/app.html'
})
export class AppComponent implements OnInit {
...
}
app/app.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { AppRoutingModule } from './app-routing.module';
import { AuthModule } from './auth/auth.module';
import { AppComponent } from './app.component';
import { AuthService } from './auth/services/auth.service';
import { AuthHttp } from './auth/services/auth-http';
@NgModule({
declarations: [
AppComponent,
AuthService,
AuthHttp
],
bootstrap: [ AppComponent ],
imports : [
BrowserModule,
FormsModule,
HttpModule,
AuthModule,
AppRoutingModule
],
providers: [
AuthService,
AuthHttp
]
})
export class AppModule {
}
你不需要这条线:
import { SigninComponent, RegisterComponent } from './auth/auth.module';
在您的 app.component.ts
中,因为您已经在 app.module.ts
中包含了 AuthModule
。 AutModule
导入足以在应用程序中使用您的组件。
您得到的错误是 TypeScript 错误,而不是 Angular 错误,并且声明没有导出成员是正确的,因为它搜索有效的 EC6 导出语法,而不是 angular 模块导出。因此,这条线将适用于您的 app.component.ts
:
import { SigninComponent } from './auth/components/signin.component';
还有一些常见的情况:
也许你导出 class 带有 "default" 前缀,就像这样
export default class Module {}
只需删除它
export class Module {}
这已经解决了我的问题
如果您的界面名称与其包含的文件不同,也会发生此错误。阅读有关 ES6 模块的详细信息。如果 SignInComponent
是一个接口,就像我的情况一样,那么
SignInComponent
应该在名为 SignInComponent.ts
.
的文件中
对我来说,当我在单个 .ts
文件中有多个 export
语句时,就会出现这样的问题...
使用 atom (1.21.1 ia32)...我遇到了同样的错误,即使我在 app.module.ts 和 app.module.ts[ 中的声明中添加了对我的管道的引用=10=]
解决方案是重新启动我的节点实例...停止网站然后再次执行 ng serve...之后转到 localhost:4200 就像一个魅力重启
我在 app.rounting.ts 或 app.module.ts 中的组件名称错误(区分大小写)。
我遇到了同样的问题,我刚刚使用新端口启动应用程序,一切看起来都很好。
ng serve --port 4201
我遇到了类似的问题。我犯的错误是我没有在 app.module.ts 的 providers 数组中添加服务。
希望对您有所帮助,谢谢。
在我的模块中,我以这种方式导出 类:
export { SigninComponent } from './SigninComponent';
export { RegisterComponent } from './RegisterComponent';
这允许我从同一模块的文件中导入多个 类:
import { SigninComponent, RegisterComponent} from "../auth.module";
PS: 当然@Fjut 回答是正确的,但同时它不支持从同一个文件中多次导入。我建议根据您的需要使用这两个答案。但是从模块导入使得文件夹结构重构更容易。
就我而言,我重新启动了 服务器 并且它起作用了。
对于在 Angular2 中进行身份验证的网站,我想在主应用程序组件中使用身份验证子模块的一个组件。但是,我不断收到以下错误:
app/app.component.ts(3,10): error TS2305: Module '"<dir>/app/auth/auth.module"' has no exported member 'SigninComponent'.
即使在导出 SigninComponent 之后。
工程文件夹结构如下图:
app/auth/auth.module.ts:
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { RegisterComponent } from './components/register.component';
import { SigninComponent } from './components/signin.component';
import { HomeComponent } from './components/home.component';
import { AuthService } from './services/auth.service';
import { AuthHttp } from './services/auth-http';
@NgModule({
imports: [
CommonModule,
FormsModule
],
declarations: [
RegisterComponent,
SigninComponent,
HomeComponent
],
providers: [
AuthService,
AuthHttp
],
exports: [
RegisterComponent,
SigninComponent,
HomeComponent
]
})
export class AuthModule {}
app/auth/components/signin.component.ts:
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '../services/auth.service';
@Component({
selector: 'signin',
templateUrl: 'app/auth/signin.html'
})
export class SigninComponent {
...
}
app/app.component.ts:
import { Component, OnInit } from '@angular/core';
import { Router, RouterOutlet } from '@angular/router';
import { SigninComponent, RegisterComponent } from './auth/auth.module';
import { AuthHttp } from './auth/services/auth-http';
import { AuthService } from './auth/services/auth.service';
@Component({
selector: 'myapp',
templateUrl: 'app/app.html'
})
export class AppComponent implements OnInit {
...
}
app/app.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { RouterModule } from '@angular/router';
import { AppRoutingModule } from './app-routing.module';
import { AuthModule } from './auth/auth.module';
import { AppComponent } from './app.component';
import { AuthService } from './auth/services/auth.service';
import { AuthHttp } from './auth/services/auth-http';
@NgModule({
declarations: [
AppComponent,
AuthService,
AuthHttp
],
bootstrap: [ AppComponent ],
imports : [
BrowserModule,
FormsModule,
HttpModule,
AuthModule,
AppRoutingModule
],
providers: [
AuthService,
AuthHttp
]
})
export class AppModule {
}
你不需要这条线:
import { SigninComponent, RegisterComponent } from './auth/auth.module';
在您的 app.component.ts
中,因为您已经在 app.module.ts
中包含了 AuthModule
。 AutModule
导入足以在应用程序中使用您的组件。
您得到的错误是 TypeScript 错误,而不是 Angular 错误,并且声明没有导出成员是正确的,因为它搜索有效的 EC6 导出语法,而不是 angular 模块导出。因此,这条线将适用于您的 app.component.ts
:
import { SigninComponent } from './auth/components/signin.component';
还有一些常见的情况:
也许你导出 class 带有 "default" 前缀,就像这样
export default class Module {}
只需删除它
export class Module {}
这已经解决了我的问题
如果您的界面名称与其包含的文件不同,也会发生此错误。阅读有关 ES6 模块的详细信息。如果 SignInComponent
是一个接口,就像我的情况一样,那么
SignInComponent
应该在名为 SignInComponent.ts
.
对我来说,当我在单个 .ts
文件中有多个 export
语句时,就会出现这样的问题...
使用 atom (1.21.1 ia32)...我遇到了同样的错误,即使我在 app.module.ts 和 app.module.ts[ 中的声明中添加了对我的管道的引用=10=]
解决方案是重新启动我的节点实例...停止网站然后再次执行 ng serve...之后转到 localhost:4200 就像一个魅力重启
我在 app.rounting.ts 或 app.module.ts 中的组件名称错误(区分大小写)。
我遇到了同样的问题,我刚刚使用新端口启动应用程序,一切看起来都很好。
ng serve --port 4201
我遇到了类似的问题。我犯的错误是我没有在 app.module.ts 的 providers 数组中添加服务。 希望对您有所帮助,谢谢。
在我的模块中,我以这种方式导出 类:
export { SigninComponent } from './SigninComponent';
export { RegisterComponent } from './RegisterComponent';
这允许我从同一模块的文件中导入多个 类:
import { SigninComponent, RegisterComponent} from "../auth.module";
PS: 当然@Fjut 回答是正确的,但同时它不支持从同一个文件中多次导入。我建议根据您的需要使用这两个答案。但是从模块导入使得文件夹结构重构更容易。
就我而言,我重新启动了 服务器 并且它起作用了。