代码之家  ›  专栏  ›  技术社区  ›  etalon11

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

  •  0
  • etalon11  · 技术社区  · 6 年前

    我已经建立了一个离子项目,并添加了一个页面“sumbuilder”。之后,我添加了一个组件“partscont”。组件已自动添加到应用模块ts,但我没能成功制作标签“ <app-partscount></app-partscount> “在我的页面上运行。所以我把组件声明从应用模块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 {}
    

    现在的问题是:我必须在这个文件中添加什么(sumbuilder.module.ts模块)在中声明组件时访问该组件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 回复  |  直到 6 年前
        1
  •  1
  •   Fartab    6 年前

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

    每个角度模块必须使用 declaration: [] 属于 @NgModule exports: [] 属于 @天然气模块

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

    在另一个模块中,我们可以使用 FirstComponent 属于 MyFirstModule :

    @NgModule({
      declarations: [ ComponentWhichUsesFirstComponent ],
      imports: [ MyFirstModule ]
    })
    export class MySecondModule {}
    
    @Component({
      selector: 'an-optional-selector',
      template: `<first-component>  </first-component>`
    })
    export class ComponentWhichUsesFirstComponent {}
    

    stackblits 例子。