Как получить доступ к angular-компоненту в ionic-page? - PullRequest
0 голосов
/ 15 сентября 2018

Я создал ионный проект и добавил страницу "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 {}

Теперь вопрос: что мне нужно добавить в этот файл (sumbuilder.module.ts) для доступа к Компоненту, когда он объявлен в app.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 голосов
/ 15 сентября 2018

Если я правильно понимаю ваш вопрос, вы имеете в виду, как мы можем объявить компонент в модуле и использовать его в другом модуле. Если вы имеете в виду, вот ответ:

Каждый угловой модуль должен указывать свои объявленные компоненты, используя declaration: [] из @NgModule декоратора. Если этот модуль позволяет другим модулям использовать его компоненты, то он должен быть указан в exports: [] из @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:

@NgModule({
  declarations: [ ComponentWhichUsesFirstComponent ],
  imports: [ MyFirstModule ]
})
export class MySecondModule {}

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

См. Пример стекблитов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...