经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » AngularJS2 » 查看文章
详解Angular项目中共享模块的实现
来源:jb51  时间:2021/5/24 12:12:47  对本文有异议

一、共享CommonModule

创建share Modele:ng g m share

import进来所有需要共享的模块都export出去,

暂时只有CommonModule,以后会有一些需要共享的组件。

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3.  
  4. @NgModule({
  5. imports: [
  6. CommonModule
  7. ],
  8. exports:[
  9. CommonModule
  10. ],
  11. declarations: []
  12. })
  13. export class SharedModule { }

在app Module中把core Module导入进来。

  1. import { BrowserModule } from '@angular/platform-browser';
  2. import { NgModule } from '@angular/core';
  3.  
  4. import { AppComponent } from './app.component';
  5. import {CoreModule} from './core/core.module';
  6.  
  7. @NgModule({
  8. declarations: [
  9. AppComponent
  10. ],
  11. imports: [
  12. BrowserModule,
  13. CoreModule
  14. ],
  15. providers: [],
  16. bootstrap: [AppComponent]
  17. })
  18. export class AppModule { }

二、共享MaterialModule

为了方便管理,把Material相关组件的导入导出单独放在一个Moduel中,在ShareModule中导入导出即可。

  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { MatToolbarModule, MatSidenavModule, MatButtonModule, MatCardModule, MatInputModule, MatListModule, MatSlideToggleModule, MatGridListModule, MatDialogModule, MatAutocompleteModule, MatMenuModule, MatCheckboxModule, MatTooltipModule, MatDatepickerModule, MatRadioModule, MatNativeDateModule, MatSelectModule } from '@angular/material';
  4. import { MatIconModule } from '@angular/material';
  5.  
  6. const module=[
  7. MatSidenavModule,
  8. MatIconModule,
  9. MatToolbarModule,
  10. MatIconModule,
  11. MatButtonModule,
  12. MatCardModule,
  13. MatInputModule,
  14. MatListModule,
  15. MatSlideToggleModule,
  16. MatGridListModule,
  17. MatDialogModule,
  18. MatAutocompleteModule,
  19. MatMenuModule,
  20. MatCheckboxModule,
  21. MatTooltipModule,
  22. MatDatepickerModule,
  23. MatRadioModule,
  24. MatNativeDateModule,
  25. MatSelectModule
  26. ];
  27.  
  28. @NgModule({
  29. declarations: [],
  30. imports: [
  31. module
  32. ],
  33. exports:[
  34. module
  35. ]
  36. })
  37. export class MaterialModule { }
  1. import { NgModule } from '@angular/core';
  2. import { CommonModule } from '@angular/common';
  3. import { MaterialModule } from '../material/material.module';
  4. import { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';
  5.  
  6. @NgModule({
  7. imports: [
  8. CommonModule,
  9. MaterialModule
  10. ],
  11. exports:[
  12. CommonModule,
  13. MaterialModule
  14. ],
  15. declarations: [ConfirmDialogComponent]
  16. })
  17. export class SharedModule { }

三、共享ConfirmDialog

确认对话框不管是在删除任务还是在删除项目中都会用到,所以放在sharedModule中。

$ ng g c shared/confirm-dialog

也可以通过ng g c shared/confirm-dialog -it -is建一个内联的template和style

  1. <form>
  2. <h2 md-dialog-title>{{title}}</h2>
  3. <div mat-dialog-content>
  4. {{content}}
  5. </div>
  6. <div mat-dialog-actions>
  7. <button type="button" mat-raised-button color="primary" (click)="onClick(true)">确定</button>
  8. <button type="button" mat-button mat-dialog-close (click)="onClick(false)">取消</button>
  9. </div>
  10. </form>
  1. import { Component, OnInit, Inject } from "@angular/core";
  2. import { MatDialogRef } from "@angular/material";
  3. import { MAT_DIALOG_DATA } from "@angular/material";
  4.  
  5. @Component({
  6. selector: "app-confirm-dialog",
  7. templateUrl: "./confirm-dialog.component.html",
  8. styleUrls: ["./confirm-dialog.component.scss"]
  9. })
  10. export class ConfirmDialogComponent implements OnInit {
  11. title = "";
  12. content = "";
  13. constructor(
  14. private dialogRef: MatDialogRef<ConfirmDialogComponent>,
  15. @Inject(MAT_DIALOG_DATA) private data
  16. ) { }
  17.  
  18. ngOnInit() {
  19. this.title = this.data.title;
  20. this.content = this.data.content;
  21. }
  22. onClick(result: boolean) {
  23. this.dialogRef.close(result);
  24. }
  25. }

然后把ConfirmDialogComponent组件放在sharedModule中。

  1. import { NgModule } from "@angular/core";
  2. import { CommonModule } from "@angular/common";
  3. import { MaterialModule } from "../material/material.module";
  4. import { ConfirmDialogComponent } from "./confirm-dialog/confirm-dialog.component";
  5.  
  6. @NgModule({
  7. imports: [CommonModule, MaterialModule],
  8. exports: [CommonModule, MaterialModule],
  9. declarations: [ConfirmDialogComponent],
  10. entryComponents: [ConfirmDialogComponent]
  11. })
  12. export class SharedModule { }

如果使用ConfirmDialog,可参考删除project。

以上就是详解Angular项目中共享模块的实现的详细内容,更多关于Angular的资料请关注w3xue其它相关文章!

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号