Angular 2+,有啥方法可以声明一个模块中的所有组件,然后在 app.module.ts 中导入?

Posted

技术标签:

【中文标题】Angular 2+,有啥方法可以声明一个模块中的所有组件,然后在 app.module.ts 中导入?【英文标题】:Angular 2+, Is there any way I can declare all the components in a module and then import in app.module.ts?Angular 2+,有什么方法可以声明一个模块中的所有组件,然后在 app.module.ts 中导入? 【发布时间】:2019-01-31 17:35:57 【问题描述】:

您好,我正在尝试在单个模块中声明所有组件,然后将该组件模块添加到 app.module.ts 的导入中。

import  LandingPageComponent  from './landing-page/landing-page.component';
import  JobSeekerComponent  from './job-seeker/job-seeker.component';
import  RecruiterComponent  from './recruiter/recruiter.component';
import  PostJobsComponent  from './recruiter/post-jobs/post-jobs.component';
import  JobSeekerLayoutComponent  from './layout/job-seeker-layout/job-seeker-layout.component';
import  RecruiterLayoutComponent  from './layout/recruiter-layout/recruiter-layout.component';
import  RecruiterHeaderComponent  from './layout/recruiter-header/recruiter-header.component';
import  AutocompleteComponent  from './common/autocomplete/autocomplete.component';
import  NgModule  from '@angular/core';

@NgModule(
    imports: [
        LandingPageComponent,
        JobSeekerComponent,
        RecruiterComponent,
        PostJobsComponent,
        JobSeekerLayoutComponent,
        RecruiterLayoutComponent,
        RecruiterHeaderComponent,
        AutocompleteComponent
    ],
    exports: [
        LandingPageComponent,
        JobSeekerComponent,
        RecruiterComponent,
        PostJobsComponent,
        JobSeekerLayoutComponent,
        RecruiterLayoutComponent,
        RecruiterHeaderComponent,
        AutocompleteComponent
    ],
)
export class **ComponentsModule**  

这是我创建的组件模块,然后我想在 app.module.ts 中对其进行初始化。这会起作用吗,因为当我尝试这样做时,它会引发错误请添加@NgModule 注释。在我的app.module.ts 中。我做了这样的事情。

import  BrowserModule  from '@angular/platform-browser';
import  NgModule  from '@angular/core';
import  AppComponent  from './app.component';
import  FormsModule, ReactiveFormsModule  from '@angular/forms';
import  **ComponentsModule**  from './components';
import  BrowserAnimationsModule  from '@angular/platform-browser/animations';
import  MaterialModule  from './material';
import  HttpClientModule  from '@angular/common/http';
import  AppRoutingModule  from './app-routing.module';

@NgModule(
  declarations: [
    AppComponent  
  ],
  imports: [
    BrowserModule,
    BrowserAnimationsModule,
    MaterialModule,
    AppRoutingModule,
    FormsModule,
    HttpClientModule,
    ReactiveFormsModule,
    **ComponentsModule**
  ],
  providers: [],
  bootstrap: [AppComponent]
)
export class AppModule  

【问题讨论】:

此链接可能对您有所帮助:malcoded.com/posts/angular-fundamentals-modules 谢谢兄弟,正在研究。 :) 【参考方案1】:

而不是importing 组件,您应该在ComponentsModule 中使用declare 它们

@NgModule(
    declarations: [           // declare components here
        LandingPageComponent,
        JobSeekerComponent,
        RecruiterComponent,
        PostJobsComponent,
        JobSeekerLayoutComponent,
        RecruiterLayoutComponent,
        RecruiterHeaderComponent,
        AutocompleteComponent
    ],
    exports: [
        LandingPageComponent,
        JobSeekerComponent,
        RecruiterComponent,
        PostJobsComponent,
        JobSeekerLayoutComponent,
        RecruiterLayoutComponent,
        RecruiterHeaderComponent,
        AutocompleteComponent
    ],
)

【讨论】:

由模块“ComponentsModule”声明的意外模块“CommonModule”。请添加@Pipe/@Directive/@Component 注解。这就是我得到的。 请参阅此帖子***.com/questions/43603515/… 以更好地了解应该导入、提供和声明的内容。 您可能在ComponentsModule 中声明了CommonModule。相反,您应该在 ComponentsModuleimport 它。 谢谢阿米特!有效。我已经导入了 CommonModule,这就是它不起作用的原因。此外,RoutingModule 存在问题。我需要在 app.module.ts 中导入两次,然后在 ComponentsModule 中导入两次吗?? 如果您的意思是RouterModule,是的,您将在所有routing 文件中导入它以注册您的路线,例如应用模块中的RouterModule.forRoot(routes) 和子模块中的RouterModule.forChild(routes)

以上是关于Angular 2+,有啥方法可以声明一个模块中的所有组件,然后在 app.module.ts 中导入?的主要内容,如果未能解决你的问题,请参考以下文章

他们有啥方法可以从 KendoTreeView 中获取选定的节点并在 Angular 5 中的另一个 KendoTreeView 中显示它们

有啥方法可以避免 axios 中的 linkpreview.net 出现 CORS 错误,例如 Angular 中的 trustAsResourceUrl()?

Angular 2 - 多个模块中的管道重用 - 未找到错误或重复定义

有啥方法可以在 Angular2 中测试 EventEmitter?

module.ngdoc

Angular 2 路由应用程序路由模块声明错误