Angular 如何访问离子页面中的角度组件?

Angular 如何访问离子页面中的角度组件?,angular,ionic-framework,Angular,Ionic Framework,我已经建立了一个爱奥尼亚项目,并添加了一个页面“sumbuilder”。之后,我添加了一个组件“partscount”。该组件已自动添加到app.module.ts,但我无法使标记“”在我的页面中运行。因此,我从app.module.ts中删除了组件声明,将其移动到我的sumbuilder.module.ts中,然后它就工作了 以下是工作代码: import { NgModule } from '@angular/core'; import { CommonModule } from '@ang

我已经建立了一个爱奥尼亚项目,并添加了一个页面“sumbuilder”。之后,我添加了一个组件“partscount”。该组件已自动添加到app.module.ts,但我无法使标记“
”在我的页面中运行。因此,我从app.module.ts中删除了组件声明,将其移动到我的sumbuilder.module.ts中,然后它就工作了

以下是工作代码:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';

import { IonicModule } from '@ionic/angular';

import { SumbuilderPage } from './sumbuilder.page';
import { PartcountsComponent} from '../partcounts/partcounts.component';

const routes: Routes = [
  {
    path: '',
    component: SumbuilderPage
  }
];

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    IonicModule,
    RouterModule.forChild(routes)
  ],
  declarations: [
    SumbuilderPage, 
    PartcountsComponent
  ]
})
export class SumbuilderPageModule {}
现在的问题是:当组件在app.module.ts中声明时,我必须在这个文件(sumbuilder.module.ts)中添加什么才能访问它?我对棱角分明是个新手,这是一个初学者的问题。因为我想多次使用此组件,所以我想在app.module中声明它

app.module.ts:

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';

import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { PartcountsComponent } from './partcounts/partcounts.component';
import { FormsModule } from '@angular/forms';

@NgModule({
  declarations: [AppComponent, PartcountsComponent],
  entryComponents: [],
  imports: [
    BrowserModule,
    IonicModule.forRoot(),
    AppRoutingModule,
    FormsModule,
  ],
  exports: [
    PartcountsComponent
  ],
  providers: [
    StatusBar,
    SplashScreen,
    { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}

如果我正确理解您的问题,您的意思是我们如何在一个模块中声明一个组件并在另一个模块中使用它。如果你是这样想的,那么答案如下:

每个角度模块必须使用
@NgModule
装饰器的
声明:[]
指定其声明的组件。如果该模块允许其他模块使用其组件,则必须在
@NgModule
导出:[]
中指定该模块。在这种情况下,另一个模块可以导入该模块并使用其导出的组件。以下是一个例子:

@Component({
  selector: 'first-component',
  template: `<p> I'm first component </p>`
})
export class FirstComponent {}

@NgModule({
  declarations: [ FirstComponent ],
  exports: [ FirstComponent ]
})
export class MyFirstModule {}

请参见此示例。

谢谢您的回答。我想你接近我的解决方案了。如果我在app.module.ts中声明了该组件,现在我想从我的页面访问该组件,该怎么办。我必须在我的sumbuilder.module.ts中导入“AppModule”吗?是的,任何模块都存在导入/导出规则。我建议在sumbuilder.module.ts中声明并导出您的组件,然后在app.module.TSC中导入并使用它。您能解释一下原因吗?我认为您只需要在appmodule中声明一次组件,然后就可以从任何地方访问它。这是我想做的。当我在sumbuilder.module.ts中声明组件时,我没有任何问题。阅读以下内容可以更深入地了解角度模块:
@NgModule({
  declarations: [ ComponentWhichUsesFirstComponent ],
  imports: [ MyFirstModule ]
})
export class MySecondModule {}

@Component({
  selector: 'an-optional-selector',
  template: `<first-component>  </first-component>`
})
export class ComponentWhichUsesFirstComponent {}