如何访问离子页面中的角度分量?

时间:2018-09-15 14:00:25

标签: angular ionic-framework

我已经建立了一个离子项目,并添加了一个页面“ sumbuilder”。之后,我添加了一个组件“ partscount”。该组件已自动添加到app.module.ts中,但是我没有设法使标签“ <app-partscount></app-partscount>”在我的页面中运行。因此,我从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 {}

1 个答案:

答案 0 :(得分:1)

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

每个angular模块必须使用declaration: []装饰器的@NgModule指定其已声明的组件。如果该模块允许其他模块使用其组件,则必须在exports: []的{​​{1}}中指定它。在这种情况下,另一个模块可以导入该模块并使用其导出的组件。这是一个示例:

@NgModule

在另一个模块中,我们可以使用@Component({ selector: 'first-component', template: `<p> I'm first component </p>` }) export class FirstComponent {} @NgModule({ declarations: [ FirstComponent ], exports: [ FirstComponent ] }) export class MyFirstModule {} 中导出的FirstComponent

MyFirstModule

请参阅此stackblits示例。