Detailed explanation of the implementation of shared modules in Angular projects

Detailed explanation of the implementation of shared modules in Angular projects

1. Shared CommonModule

Create a share model: ng gm share

All modules that need to be shared are exported after importing.

For now, there is only CommonModule, and there will be some components that need to be shared in the future.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

@NgModule({
  imports: [
    CommonModule
  ],
  exports:
    CommonModule
  ],
  declarations: []
})
export class SharedModule { }

Import the core Module into the app Module.

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppComponent } from './app.component';
import {CoreModule} from './core/core.module';

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

2. Shared MaterialModule

For easy management, put the import and export of Material-related components in a separate Moduel, and import and export them in ShareModule.

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MatToolbarModule, MatSidenavModule, MatButtonModule, MatCardModule, MatInputModule, MatListModule, MatSlideToggleModule, MatGridListModule, MatDialogModule, MatAutocompleteModule, MatMenuModule, MatCheckboxModule, MatTooltipModule, MatDatepickerModule, MatRadioModule, MatNativeDateModule, MatSelectModule } from '@angular/material';
import { MatIconModule } from '@angular/material';

const module=[
  MatSidenavModule,
  MatIconModule,
  MatToolbarModule,
  MatIconModule,
  MatButtonModule,
  MatCardModule,
  MatInputModule,
  MatListModule,
  MatSlideToggleModule,
  MatGridListModule,
  MatDialogModule,
  MatAutocompleteModule,
  MatMenuModule,
  MatCheckboxModule,
  MatTooltipModule,
  MatDatepickerModule,
  MatRadioModule,
  MatNativeDateModule,
  MatSelectModule
];

@NgModule({
  declarations: [],
  imports: [
    module
  ],
  exports:
    module
  ]
})
export class MaterialModule { }
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { MaterialModule } from '../material/material.module';
import { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';

@NgModule({
  imports: [
    CommonModule,
    MaterialModule
  ],
  exports:
    CommonModule,
    MaterialModule
  ],
  declarations: [ConfirmDialogComponent]
})
export class SharedModule { }

3. Shared ConfirmDialog

The confirmation dialog box is used whether you are deleting a task or a project, so it is placed in the sharedModule.

$ ng gc shared/confirm-dialog

You can also create an inline template and style using ng gc shared/confirm-dialog -it -is

<form>
  <h2 md-dialog-title>{{title}}</h2>
  <div mat-dialog-content>
    {{content}}
  </div>
  <div mat-dialog-actions>
    <button type="button" mat-raised-button color="primary" (click)="onClick(true)">OK</button>
    <button type="button" mat-button mat-dialog-close (click)="onClick(false)">Cancel</button>
  </div>
</form>
import { Component, OnInit, Inject } from "@angular/core";
import { MatDialogRef } from "@angular/material";
import { MAT_DIALOG_DATA } from "@angular/material";

@Component({
  selector: "app-confirm-dialog",
  templateUrl: "./confirm-dialog.component.html",
  styleUrls: ["./confirm-dialog.component.scss"]
})
export class ConfirmDialogComponent implements OnInit {
  title = "";
  content = "";
  constructor(
    private dialogRef: MatDialogRef<ConfirmDialogComponent>,
    @Inject(MAT_DIALOG_DATA) private data
  ) { }

  ngOnInit() {
    this.title = this.data.title;
    this.content = this.data.content;
  }
  onClick(result: boolean) {
    this.dialogRef.close(result);
  }
}

Then put the ConfirmDialogComponent component in sharedModule.

import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { MaterialModule } from "../material/material.module";
import { ConfirmDialogComponent } from "./confirm-dialog/confirm-dialog.component";

@NgModule({
  imports: [CommonModule, MaterialModule],
  exports: [CommonModule, MaterialModule],
  declarations: [ConfirmDialogComponent],
  entryComponents: [ConfirmDialogComponent]
})
export class SharedModule { }

If you use ConfirmDialog, refer to Deleting a Project.

The above is a detailed explanation of the implementation of shared modules in Angular projects. For more information about Angular, please pay attention to other related articles on 123WORDPRESS.COM!

You may also be interested in:
  • Detailed explanation of angular2 modules and shared modules
  • Detailed explanation of Angular structural directive modules and styles
  • Angular multi-module project build process
  • Specific usage of angular2 NgModel module
  • Example of Angular implementing preloading of delayed modules
  • Detailed explanation of lazy loading Angular modules using routing
  • A brief discussion on the lazy loading method of Angular2 modules

<<:  Summary of Nginx load balancing methods

>>:  Oracle deployment tutorial in Linux environment

Recommend

How to create a new user in CentOS and enable key login

Table of contents Create a new user Authorize new...

js to implement file upload style details

Table of contents 1. Overview 2. Parameters for c...

Examples of clearfix and clear

This article mainly explains how to use clearfix a...

Example code for implementing random roll caller in html

After this roll call device starts calling the ro...

Use tomcat to set shared lib to share the same jar

As more and more projects are deployed, more and ...

Explain MySQL's binlog log and how to use binlog log to recover data

As we all know, binlog logs are very important fo...

Hide div in HTML Hide table TABLE or DIV content css style

I solved a problem tonight that has been botherin...

The whole process of Vue page first load optimization

Table of contents Preface 1. Image Optimization 2...

An example of using Dapr to simplify microservices from scratch

Table of contents Preface 1. Install Docker 2. In...

Detailed explanation of JS homology strategy and CSRF

Table of contents Overview Same Origin Policy (SO...

Docker enables multiple port mapping commands

as follows: docker run -d -p 5000:23 -p 5001:22 -...

A simple tutorial on how to use the mysql log system

Table of contents Preface 1. Error log 2. Binary ...

Use Firebug tool to debug the page on iPad

How to debug a page on iPad? When using iOS 5, you...