首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不将其添加到模块中的声明中而呈现的角12倍分量

不将其添加到模块中的声明中而呈现的角12倍分量
EN

Stack Overflow用户
提问于 2021-08-22 09:49:53
回答 1查看 506关注 0票数 1

因此,我最近开始研究角度,试图澄清组件和模块是如何工作的,以及它们是如何相互作用的。

我有一个AppComponent,它有一个路由器出口,并被添加到AppModule的声明中.但是其他两个组件并没有添加到声明中(登录和页面找不到组件),而是将这两个组件作为路由添加到应用程序路由模块中。根据我的理解,登录和页面不应该在浏览器中呈现,除非我将它们添加到AppModule中的声明中,但现在它们确实呈现得很好。我想知道为什么?

我有分享代码从应用程序模块和应用程序路由模块下面。

应用程序模块

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { DealerModule } from './ng-modules/dealer.module';

export const str: string = "sample string from Login Module";

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    BrowserModule,
    DealerModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

应用程序路由模块

代码语言:javascript
复制
import { NgModule } from "@angular/core";
import { RouterModule, Routes } from "@angular/router";
import { PagenotfoundComponent } from "./modules/core/pagenotfound/pagenotfound.component";
import { LoginComponent } from "./modules/login/login/login.component";

const AppRoutes: Routes = [
  {
    path: '', 
    redirectTo: 'login',
    pathMatch: 'full'
  },
  {
    path: 'login',
    component: LoginComponent
  },
  {
    path: '**',
    component: PagenotfoundComponent
  }
]

@NgModule({
  declarations: [],
  imports: [
    RouterModule.forRoot(AppRoutes)
  ], exports: [
    RouterModule
  ]
})
export class AppRoutingModule { }

交易商模块

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { DealerRoutingModule } from './dealer-routing.module';
import { LayoutComponent } from '../modules/core/layout/layout.component';

@NgModule({
  declarations: [LayoutComponent],
  imports: [
    CommonModule,
    DealerRoutingModule
  ]
})
export class DealerModule { }

经销商路由模块

代码语言:javascript
复制
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { LayoutComponent } from '../modules/core/layout/layout.component';
import { AdddealerComponent } from '../modules/dealers/adddealer/adddealer.component';
import { ListdealersComponent } from '../modules/dealers/listdealers/listdealers.component';

const AppRoutes: Routes = [
  {
    path: 'main',
    component: LayoutComponent,
    children: [
      { path: 'adddealer', component: AdddealerComponent },
      { path: 'listdealers', component: ListdealersComponent }
    ]
  }
];

@NgModule({
  declarations: [],
  imports: [
    CommonModule,
    RouterModule.forChild(AppRoutes)
  ],
  exports: [
    RouterModule
  ]
})
export class DealerRoutingModule { }

如您所见,在DealerRoutingModule的情况下,我没有在声明中添加AddDealerComponent和ListDealersComponent,但它们也在浏览器上呈现。

要明确的是,LayoutComponent也没有模块。它仅用作AddDealer和ListDealers组件的主布局,用于承载导航条和侧边栏,以及路由器出口。

如果我从交易商模块中的声明中删除布局组件,应用程序将通过编译时异常。为什么声明中需要布局组件,而AddDealer和ListDealers组件却不需要?

EN

回答 1

Stack Overflow用户

发布于 2021-12-09 20:53:02

声明/导入语句是(而不是TypeScript),它们是通过selector属性在html中呈现组件所必需的,

如果您只是从一个 TypeScript 文件导出一个类并将其导入另一个TypeScript文件中,那么它将工作,因为它是一个简单的TypeScript执行,

由于您告诉它确切的文件,它可以找到组件( TS类):

代码语言:javascript
复制
import { LoginComponent } from "./modules/login/login/login.component";

然后,如果您尝试以以下格式引用该组件作为lib的一部分,则有可能:

代码语言:javascript
复制
import { LoginComponent } from '@MyWorkspace/login';

它肯定会失败

router还使用TypeScript调用,并且不需要selector-to-calss反射,因此不使用或不需要角声明/导出机制。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68880175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档