Pesquisa de site

angular - Usando Componente sem Importação


Oi, eu gostaria de saber se é possível usar um componente sem importá-lo novamente se ele já estiver declarado no AppModule. Como eu tenho 10 ou mais páginas/componentes para usar, será difícil importar cada um e acompanhar.

Aqui está o meu app.module.ts

import { NgModule, ErrorHandler } from '@angular/core';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';

@NgModule({
declarations: [
    MyApp,
    HomePage
],
imports: [
    IonicModule.forRoot(MyApp)
],
bootstrap: [IonicApp],
entryComponents: [
    MyApp,
    HomePage
],
providers: [
    {provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {}

E eu gostaria de usar HomePage sem reimportá-la. Como tenho tantas páginas para lidar com isso.

outra-pagina.ts

import { Component } from '@angular/core';
@Component({
  selector: 'page-home',
  templateUrl: 'login.html',
  providers: [LoginService]
})
export class LoginPage {
constructor(){ }
//Call HomePage here without having to import it again.
}

Resposta #1

Se você mencionar uma classe em algum lugar no código, ela precisa ser importada, caso contrário não será reconhecida como essa classe, o que torna o código inválido ou pelo menos não faz o que você espera.

Os imports no topo do arquivo não estão relacionados ao Angular de forma alguma, eles são imports do TypeScript. Os imports em @NgModule() são imports do Angular e cumprem uma finalidade totalmente diferente dos imports do TS.

Portanto, adicionar componentes ao @NgModule() não torna outras importações obsoletas.

Resposta #2

Para usar o Comonent no seu código-fonte (arquivo ts), você precisa importá-lo, para que o TypeScript o reconheça.
Se você deseja usá-lo apenas no Template, ele precisa ser reconhecido apenas pelo framework Angular e nenhum import é necessário.

Para informar ao Angular sobre o seu Component, você precisa declarar ele em um NgModule. Cada Component dentro deste NgModule então conhecerá o seu Component.
Para informar outros NgModules sobre o seu Component, você precisa exportar ele do NgModule que o declara e importar esse NgModule nos outros NgModules.