前面已经完成书籍信息后台的业务,现在来展示书籍信息
首先准备本地化文本(Localization Text,不知道是不是这么翻译,暂时这么叫)
找到.Domain.Shared类库下面的Localization/BookStore/en.json
修改如下:
{ "Culture": "en", "Texts": { "Menu:Home": "Home", "Welcome": "Welcome", "LongWelcomeMessage": "Welcome to the application. This is a startup project based on the ABP framework. For more information, visit abp.io.", "Menu:BookStore": "Book Store", "Menu:Books": "Books", "Actions": "Actions", "Close": "Close", "Delete": "Delete", "Edit": "Edit", "PublishDate": "Publish date", "NewBook": "New book", "Name": "Name", "Type": "Type", "Price": "Price", "CreationTime": "Creation time", "AreYouSure": "Are you sure?", "AreYouSureToDelete": "Are you sure you want to delete this item?", "Enum:BookType:0": "Undefined", "Enum:BookType:1": "Adventure", "Enum:BookType:2": "Biography", "Enum:BookType:3": "Dystopia", "Enum:BookType:4": "Fantastic", "Enum:BookType:5": "Horror", "Enum:BookType:6": "Science", "Enum:BookType:7": "Science fiction", "Enum:BookType:8": "Poetry" } }
这是一些基础配置,可以随便写,但是规范:
1.菜单前加Menu:,比如Menu:Home
2.使用类似Enum:<type>:<value>定义枚举类型
首先确保安装了npm和angular脚手架
cmd安装yarn:npm install yarn -g
安装angular脚手架:npm install -g @angular/cli
可能遇到node版本低的错误
查看Node版本:node -v
在vscode中使用yarn ng generate module book --module app --routing --route books
便会产生六个新文件,打开/src/app/book/book.module.ts并修改
import { NgModule } from ‘@angular/core‘;
import { SharedModule } from ‘../shared/shared.module‘;
import { BookRoutingModule } from ‘./book-routing.module‘;
import { BookComponent } from ‘./book.component‘;
@NgModule({
  declarations: [BookComponent],
  imports: [
    BookRoutingModule,
    SharedModule
  ]
})
export class BookModule { }
在app-routing.module.ts中添加路径
{ path: ‘books‘, loadChildren: () => import(‘./book/book.module‘).then(m => m.BookModule) },
在route.provider.ts中修改
function configureRoutes(routes: RoutesService) { return () => { routes.add([ { path: ‘/‘, name: ‘::Menu:Home‘, iconClass: ‘fas fa-home‘, order: 1, layout: eLayoutType.application, }, { path: ‘/book-store‘, name: ‘::Menu:BookStore‘, iconClass: ‘fas fa-book‘, order: 2, layout: eLayoutType.application, }, { path: ‘/books‘, name: ‘::Menu:Books‘, parentName: ‘::Menu:BookStore‘, layout: eLayoutType.application, }, ]); }; }
添加菜单目录
修改展示页面book.component.ts
import { ListService, PagedResultDto } from ‘@abp/ng.core‘;
import { Component, OnInit } from ‘@angular/core‘;
import { BookDto } from ‘./models‘;
import { BookService } from ‘./services‘;
@Component({
  selector: ‘app-book‘,
  templateUrl: ‘./book.component.html‘,
  styleUrls: [‘./book.component.scss‘],
  providers: [ListService],
})
export class BookComponent implements OnInit {
  book = { items: [], totalCount: 0 } as PagedResultDto<BookDto>;
  constructor(public readonly list: ListService, private bookService: BookService) {}
  ngOnInit() {
    const bookStreamCreator = (query) => this.bookService.getListByInput(query);
    this.list.hookToQuery(bookStreamCreator).subscribe((response) => {
      this.book = response;
    });
  }
}
修改book.component.html
<div class="card">
  <div class="card-header">
    <div class="row">
      <div class="col col-md-6">
        <h5 class="card-title">
          {{ ‘::Menu:Books‘ | abpLocalization }}
        </h5>
      </div>
      <div class="text-right col col-md-6"></div>
    </div>
  </div>
  <div class="card-body">
    <ngx-datatable [rows]="book.items" [count]="book.totalCount" [list]="list" default>
      <ngx-datatable-column [name]="‘::Name‘ | abpLocalization" prop="name"></ngx-datatable-column>
      <ngx-datatable-column [name]="‘::Type‘ | abpLocalization" prop="type">
        <ng-template let-row="row" ngx-datatable-cell-template>
          {{ ‘::Enum:BookType:‘ + row.type | abpLocalization }}
        </ng-template>
      </ngx-datatable-column>
      <ngx-datatable-column [name]="‘::PublishDate‘ | abpLocalization" prop="publishDate">
        <ng-template let-row="row" ngx-datatable-cell-template>
          {{ row.publishDate | date }}
        </ng-template>
      </ngx-datatable-column>
      <ngx-datatable-column [name]="‘::Price‘ | abpLocalization" prop="price">
        <ng-template let-row="row" ngx-datatable-cell-template>
          {{ row.price | currency }}
        </ng-template>
      </ngx-datatable-column>
    </ngx-datatable>
  </div>
</div>
原文:https://www.cnblogs.com/AduBlog/p/13424097.html