mirror of https://github.com/abpframework/abp.git
17 changed files with 152 additions and 1 deletions
@ -0,0 +1,19 @@ |
|||
import { NgModule } from '@angular/core'; |
|||
import { Routes, RouterModule } from '@angular/router'; |
|||
|
|||
import { BooksComponent } from './books.component'; |
|||
import { LayoutApplicationComponent } from '@abp/ng.theme.basic'; |
|||
|
|||
const routes: Routes = [ |
|||
{ |
|||
path: '', |
|||
component: LayoutApplicationComponent, |
|||
children: [{ path: '', component: BooksComponent }], |
|||
}, |
|||
]; |
|||
|
|||
@NgModule({ |
|||
imports: [RouterModule.forChild(routes)], |
|||
exports: [RouterModule] |
|||
}) |
|||
export class BooksRoutingModule { } |
|||
@ -0,0 +1 @@ |
|||
<p>books works!</p> |
|||
@ -0,0 +1,25 @@ |
|||
import { async, ComponentFixture, TestBed } from '@angular/core/testing'; |
|||
|
|||
import { BooksComponent } from './books.component'; |
|||
|
|||
describe('BooksComponent', () => { |
|||
let component: BooksComponent; |
|||
let fixture: ComponentFixture<BooksComponent>; |
|||
|
|||
beforeEach(async(() => { |
|||
TestBed.configureTestingModule({ |
|||
declarations: [ BooksComponent ] |
|||
}) |
|||
.compileComponents(); |
|||
})); |
|||
|
|||
beforeEach(() => { |
|||
fixture = TestBed.createComponent(BooksComponent); |
|||
component = fixture.componentInstance; |
|||
fixture.detectChanges(); |
|||
}); |
|||
|
|||
it('should create', () => { |
|||
expect(component).toBeTruthy(); |
|||
}); |
|||
}); |
|||
@ -0,0 +1,13 @@ |
|||
import { Component, OnInit } from "@angular/core"; |
|||
import { Store } from "@ngxs/store"; |
|||
|
|||
@Component({ |
|||
selector: "app-books", |
|||
templateUrl: "./books.component.html", |
|||
styleUrls: ["./books.component.scss"] |
|||
}) |
|||
export class BooksComponent implements OnInit { |
|||
constructor(private store: Store) {} |
|||
|
|||
ngOnInit() {} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
import { NgModule } from '@angular/core'; |
|||
import { CommonModule } from '@angular/common'; |
|||
|
|||
import { BooksRoutingModule } from './books-routing.module'; |
|||
import { BooksComponent } from './books.component'; |
|||
import { SharedModule } from '../shared/shared.module'; |
|||
|
|||
|
|||
@NgModule({ |
|||
declarations: [BooksComponent], |
|||
imports: [ |
|||
CommonModule, |
|||
BooksRoutingModule, |
|||
SharedModule |
|||
] |
|||
}) |
|||
export class BooksModule { } |
|||
@ -0,0 +1,12 @@ |
|||
import { TestBed } from '@angular/core/testing'; |
|||
|
|||
import { BooksService } from './books.service'; |
|||
|
|||
describe('BooksService', () => { |
|||
beforeEach(() => TestBed.configureTestingModule({})); |
|||
|
|||
it('should be created', () => { |
|||
const service: BooksService = TestBed.get(BooksService); |
|||
expect(service).toBeTruthy(); |
|||
}); |
|||
}); |
|||
@ -0,0 +1,15 @@ |
|||
import { Injectable } from '@angular/core'; |
|||
import { HttpClient } from '@angular/common/http'; |
|||
import { environment } from 'src/environments/environment'; |
|||
|
|||
@Injectable({ |
|||
providedIn: 'root' |
|||
}) |
|||
export class BooksService { |
|||
|
|||
constructor(private http: HttpClient) { } |
|||
|
|||
get() { |
|||
return this.http.get(`${environment.apis.default.url}/app/book`) |
|||
} |
|||
} |
|||
@ -0,0 +1,4 @@ |
|||
export class BooksGet { |
|||
static readonly type = '[Books] Get'; |
|||
constructor(public readonly payload?: any) { } |
|||
} |
|||
@ -0,0 +1 @@ |
|||
export * from './books.actions'; |
|||
@ -0,0 +1,5 @@ |
|||
export namespace Books { |
|||
export interface State { |
|||
data: any; |
|||
} |
|||
} |
|||
@ -0,0 +1 @@ |
|||
export * from './books'; |
|||
@ -0,0 +1,27 @@ |
|||
import { State, Action, StateContext } from "@ngxs/store"; |
|||
import { BooksGet } from "../actions/books.actions"; |
|||
import { Books } from "../models/books"; |
|||
import { BooksService } from "src/app/shared/services/books.service"; |
|||
import { tap } from "rxjs/operators"; |
|||
|
|||
@State<Books.State>({ |
|||
name: "BooksState", |
|||
defaults: {} as Books.State |
|||
}) |
|||
export class BooksState { |
|||
constructor(private booksService: BooksService) {} |
|||
|
|||
@Action(BooksGet) |
|||
booksAction( |
|||
{ getState, patchState }: StateContext<Books.State>, |
|||
{ payload }: BooksGet |
|||
) { |
|||
return this.booksService.get().pipe( |
|||
tap(data => { |
|||
patchState({ |
|||
data |
|||
}); |
|||
}) |
|||
); |
|||
} |
|||
} |
|||
@ -0,0 +1 @@ |
|||
export * from "./books.state"; |
|||
Loading…
Reference in new issue