Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular4模块范围不工作_Angular - Fatal编程技术网

Angular4模块范围不工作

Angular4模块范围不工作,angular,Angular,我是AngularJs新手,但已经使用AngularJs一段时间了。我决定向Angular过渡,并一直在跟进 我已经这样设置了我的模块(为了简洁起见,我没有显示我的组件,但它们应该是自解释的) /app.module.ts /core/core.module.ts /data/data.module.ts /指令/directives.module.ts /home/home.module.ts /结果/results.module.ts 因此,基本上,我使用核心模块来处理所有其他模块。看起来是

我是AngularJs新手,但已经使用AngularJs一段时间了。我决定向Angular过渡,并一直在跟进

我已经这样设置了我的模块(为了简洁起见,我没有显示我的组件,但它们应该是自解释的)

/app.module.ts

/core/core.module.ts

/data/data.module.ts

/指令/directives.module.ts

/home/home.module.ts

/结果/results.module.ts

因此,基本上,我使用核心模块来处理所有其他模块。看起来是这样的:

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { DataModule } from '../data/data.module';
import { DirectivesModule } from '../directives/directives.module';
import { HomeModule } from '../home/home.module';
import { SharedModule } from '../shared/shared.module';
import { QuestionModule } from '../question/question.module';
import { ResultsModule } from '../results/results.module';

import { HomeComponent } from '../home/home.component';
import { ResultsComponent } from '../results/results.component';

@NgModule({
  imports: [
    DataModule,
    DirectivesModule,
    SharedModule,

    HomeModule,
    QuestionModule,
    ResultsModule,

    RouterModule.forRoot([
      { path: 'results', component: ResultsComponent },
      { path: 'home', component: HomeComponent },
      { path:'', redirectTo: 'home', pathMatch: 'full' }
    ])
  ],
  declarations: []
})
export class CoreModule { }
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';

import { CoreModule } from './core/core.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent   
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    CoreModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
在我的应用程序模块中,我尝试将其缩小,因此它看起来就像这样:

import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

import { DataModule } from '../data/data.module';
import { DirectivesModule } from '../directives/directives.module';
import { HomeModule } from '../home/home.module';
import { SharedModule } from '../shared/shared.module';
import { QuestionModule } from '../question/question.module';
import { ResultsModule } from '../results/results.module';

import { HomeComponent } from '../home/home.component';
import { ResultsComponent } from '../results/results.component';

@NgModule({
  imports: [
    DataModule,
    DirectivesModule,
    SharedModule,

    HomeModule,
    QuestionModule,
    ResultsModule,

    RouterModule.forRoot([
      { path: 'results', component: ResultsComponent },
      { path: 'home', component: HomeComponent },
      { path:'', redirectTo: 'home', pathMatch: 'full' }
    ])
  ],
  declarations: []
})
export class CoreModule { }
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpClientModule } from '@angular/common/http';

import { CoreModule } from './core/core.module';
import { AppComponent } from './app.component';

@NgModule({
  declarations: [
    AppComponent   
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    CoreModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
问题是,当我运行我的站点时,我会收到错误,指出找不到问题组件。 而且,它抱怨我的指令也找不到

我认为,在各自的模块中声明组件/指令,并将所有组件/指令模块导入核心模块,然后将核心模块导入到应用程序模块中,将允许所有组件访问指令等

应用程序组件使用数据服务,工作正常,所以我不明白其他组件为什么会失败


有人能帮我吗?

我想你忘了从模块中导出组件。i、 e.在模块定义中,您必须再提供一个导出数组

exports:[coponent want to export]
所以在这个模块中,你必须写下这个

@NgModule({
  declarations: [QustionComponent, other component],
  imports: [module toimport ],
  providers: [service provider],
  exports:[QuestionComponent, other coponent you want to export ]
})

在Angular中,必须导出可以重复使用的组件

例如,指令、组件和管道是可以重用的组件

如果您想让它工作,只需在相关模块(CoreModule和DirectivesModule)中添加一个
exports
属性,该属性将包含您的QuestionComponent和所有指令


(请记住,您需要导出导入的组件;这意味着您必须首先在同一模块中导入它)

CoreModule中的模块应该在AppModule中。正如您在样式文档中所读到的,您主要使用CoreModule来添加应该具有singleton实例的提供者。如果您仍然需要澄清,请告诉我我是否错了,但您不能导入组件/指令?你是说你必须先把它添加到声明中吗?不,你是对的,我写得太快了。您需要申报,而不是导入!导入是为了模块,我的不好。