mirror of https://github.com/abpframework/abp
parent
b324cbd2cc
commit
7d683b82d1
@ -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