如何更改 Angular 的默认模块

Posted

技术标签:

【中文标题】如何更改 Angular 的默认模块【英文标题】:How to change angular's default module 【发布时间】:2020-05-31 15:38:20 【问题描述】:

在学习 Angular 模块时,我开始想知道我们是否可以更改 Angular 的默认模块。 我试过但失败了。 我对文件所做的更改:

我在 src 目录下创建了一个新目录,名为:core,其中包含以下类:core.module.ts

import  NgModule       from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';
import  CoreComponent   from './core.component';

@NgModule(
  imports:      [ BrowserModule ],
  declarations: [ CoreComponent ],
  bootstrap:    [ CoreComponent ]
)
export class CoreModule  

core 目录也包含 core.component.ts

import  Component  from "@angular/core";

@Component(
    selector: 'core',
    template: `<h2> Core Component Welcome you</h2>`
)
export class CoreComponent  

对 main.ts 进行了以下更改

import  enableProdMode  from '@angular/core';
import  platformBrowserDynamic  from '@angular/platform-browser-dynamic';

import  environment  from './environments/environment';
import  CoreModule  from './core/core.module';

if (environment.production) 
  enableProdMode();


platformBrowserDynamic().bootstrapModule(CoreModule)
  .catch(err => console.error(err));

和 index.html

<core>loading core component</core>

我知道在现实世界的场景中没有人会费心更改应用程序模块,但我只是想了解事情是如何工作的,所以如果你能帮助我了解事情是如何工作的,我缺少什么,或者如果不是甚至可以更改默认模块。

更新: 控制台不报告任何错误,但内容不加载。而不是显示(来自 core.component.ts 模板部分):

核心组件欢迎您。

它只是显示(来自 index.html 部分):

加载核心组件

【问题讨论】:

我可以看看你的错误吗? 控制台不报告任何错误,但内容不加载。而不是显示:核心组件欢迎您。它只显示:加载核心组件 查看这个演示我创建了你的代码基础它工作正常stackblitz.com/edit/angular-change-def-module ???????? 我不知道那里出了什么问题,但我现在试了一下,现在工作正常。 stackblitz.com/edit/change-app-root 感谢@Fmerco 的快速回复。 【参考方案1】:

app.module 被认为是一个根模块,根模块与其他 Angular 模块几乎没有区别

1️⃣导入BrowserModule

2️⃣最晚声明的组件之一必须添加到引导数组

3️⃣在index.html中添加一个元素匹配引导组件选择器

4️⃣ 通过将模块引用传递给 main.ts 中 platformBrowserDynamic 对象的 bootstrapModule 方法,将新模块设置为根模块。

core.module.ts

@NgModule(
  imports: [BrowserModule], // ? 1️⃣
  declarations: [CoreComponent],
  bootstrap: [CoreComponent] // ? 2️⃣
)
export class CoreModule 

index.html

<core>loading</core> <!-- // ? 3️⃣-->

main.ts

platformBrowserDynamic().bootstrapModule(CoreModule) // ? 4️⃣
 .then(ref => 

 )
 .catch(err => console.error(err));

demo ?

查看bootstrapping ?了解更多详情。

【讨论】:

以上是关于如何更改 Angular 的默认模块的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Angular 7 的组件列表中预先选择默认项

如何使用 Angular 延迟加载模块克服加载块失败的问题

如何在angular2中的每条路线更改上调用一个函数

如何扩展/覆盖 Angular Material $mdDialog.show 中的默认选项?

更改 Angular 和 ASP.NET Core 项目中的默认身份路由

如何更改 Angular Material 上 mat-icon 的大小? [复制]