From 0387fb267143e1c2217ab382f74ff25d3018fc80 Mon Sep 17 00:00:00 2001 From: Tomas Date: Sun, 26 Sep 2021 00:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=2010=20=E5=A4=A9=20=E5=88=A5=E8=AA=AA?= =?UTF-8?q?=E5=91=82=E5=B8=83=E4=BA=86=EF=BC=8C=E4=BD=A0=E8=81=BD=E9=81=8E?= =?UTF-8?q?=E9=9D=92=E9=8A=85=E4=BA=94=E5=B0=8F=E5=BC=B7=E5=97=8E=20?= =?UTF-8?q?=EF=BD=9CTemplate-driven-form=E3=80=81ngModel=E3=80=81Template?= =?UTF-8?q?=20variables?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app-routing.module.ts | 14 +++++++++-- src/app/app.module.ts | 12 +++++++-- .../add-hero-page/add-hero-page.component.css | 0 .../add-hero-page.component.html | 2 ++ .../add-hero-page.component.spec.ts | 25 +++++++++++++++++++ .../add-hero-page/add-hero-page.component.ts | 14 +++++++++++ .../edit-hero-page.component.css | 0 .../edit-hero-page.component.html | 1 + .../edit-hero-page.component.spec.ts | 25 +++++++++++++++++++ .../edit-hero-page.component.ts | 14 +++++++++++ .../hero-information-form.component.html | 17 +++++++++++++ .../hero-information-form.component.scss | 18 +++++++++++++ .../hero-information-form.component.spec.ts | 25 +++++++++++++++++++ .../hero-information-form.component.ts | 15 +++++++++++ src/app/shared/models/hero.model.ts | 2 +- 15 files changed, 179 insertions(+), 5 deletions(-) create mode 100644 src/app/pages/add-hero-page/add-hero-page.component.css create mode 100644 src/app/pages/add-hero-page/add-hero-page.component.html create mode 100644 src/app/pages/add-hero-page/add-hero-page.component.spec.ts create mode 100644 src/app/pages/add-hero-page/add-hero-page.component.ts create mode 100644 src/app/pages/edit-hero-page/edit-hero-page.component.css create mode 100644 src/app/pages/edit-hero-page/edit-hero-page.component.html create mode 100644 src/app/pages/edit-hero-page/edit-hero-page.component.spec.ts create mode 100644 src/app/pages/edit-hero-page/edit-hero-page.component.ts create mode 100644 src/app/shared/components/hero-information-form/hero-information-form.component.html create mode 100644 src/app/shared/components/hero-information-form/hero-information-form.component.scss create mode 100644 src/app/shared/components/hero-information-form/hero-information-form.component.spec.ts create mode 100644 src/app/shared/components/hero-information-form/hero-information-form.component.ts diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index aac9719..5ee5913 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,8 +1,10 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { HeroDetailComponent } from './hero-detail/hero-detail.component'; import { HeroListComponent } from './hero-list/hero-list.component'; +import { HeroDetailComponent } from './hero-detail/hero-detail.component'; +import { AddHeroPageComponent } from './pages/add-hero-page/add-hero-page.component'; +import { EditHeroPageComponent } from './pages/edit-hero-page/edit-hero-page.component'; const routes: Routes = [ { @@ -17,10 +19,18 @@ const routes: Routes = [ path: '', component: HeroListComponent }, + { + path: 'add', + component: AddHeroPageComponent + }, + { + path: 'edit', + component: EditHeroPageComponent + }, { path: ':id', component: HeroDetailComponent, - } + }, ] }, ] diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 02b9394..c34e1bd 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,14 +12,20 @@ import { AppComponent } from './app.component'; import { AppRoutingModule } from './app-routing.module'; import { HeroListComponent } from './hero-list/hero-list.component'; import { HeroDetailComponent } from './hero-detail/hero-detail.component'; - +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { AddHeroPageComponent } from './pages/add-hero-page/add-hero-page.component'; +import { EditHeroPageComponent } from './pages/edit-hero-page/edit-hero-page.component'; +import { HeroInformationFormComponent } from './shared/components/hero-information-form/hero-information-form.component'; @NgModule({ declarations: [ AppComponent, HeroListComponent, - HeroDetailComponent + HeroDetailComponent, + HeroInformationFormComponent, + AddHeroPageComponent, + EditHeroPageComponent, ], imports: [ AppRoutingModule, @@ -30,6 +36,8 @@ import { HeroDetailComponent } from './hero-detail/hero-detail.component'; MatButtonModule, MatDividerModule, MatListModule, + FormsModule, + ReactiveFormsModule ], providers: [], bootstrap: [AppComponent] diff --git a/src/app/pages/add-hero-page/add-hero-page.component.css b/src/app/pages/add-hero-page/add-hero-page.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/add-hero-page/add-hero-page.component.html b/src/app/pages/add-hero-page/add-hero-page.component.html new file mode 100644 index 0000000..3d6d841 --- /dev/null +++ b/src/app/pages/add-hero-page/add-hero-page.component.html @@ -0,0 +1,2 @@ +

新增英雄

+ diff --git a/src/app/pages/add-hero-page/add-hero-page.component.spec.ts b/src/app/pages/add-hero-page/add-hero-page.component.spec.ts new file mode 100644 index 0000000..ae7769d --- /dev/null +++ b/src/app/pages/add-hero-page/add-hero-page.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddHeroPageComponent } from './add-hero-page.component'; + +describe('AddHeroPageComponent', () => { + let component: AddHeroPageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddHeroPageComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddHeroPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/add-hero-page/add-hero-page.component.ts b/src/app/pages/add-hero-page/add-hero-page.component.ts new file mode 100644 index 0000000..58af048 --- /dev/null +++ b/src/app/pages/add-hero-page/add-hero-page.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + templateUrl: './add-hero-page.component.html', + styleUrls: ['./add-hero-page.component.css'] +}) +export class AddHeroPageComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/pages/edit-hero-page/edit-hero-page.component.css b/src/app/pages/edit-hero-page/edit-hero-page.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pages/edit-hero-page/edit-hero-page.component.html b/src/app/pages/edit-hero-page/edit-hero-page.component.html new file mode 100644 index 0000000..930cca6 --- /dev/null +++ b/src/app/pages/edit-hero-page/edit-hero-page.component.html @@ -0,0 +1 @@ +

edit-hero-page works!

diff --git a/src/app/pages/edit-hero-page/edit-hero-page.component.spec.ts b/src/app/pages/edit-hero-page/edit-hero-page.component.spec.ts new file mode 100644 index 0000000..a37379d --- /dev/null +++ b/src/app/pages/edit-hero-page/edit-hero-page.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditHeroPageComponent } from './edit-hero-page.component'; + +describe('EditHeroPageComponent', () => { + let component: EditHeroPageComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditHeroPageComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditHeroPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pages/edit-hero-page/edit-hero-page.component.ts b/src/app/pages/edit-hero-page/edit-hero-page.component.ts new file mode 100644 index 0000000..f045e15 --- /dev/null +++ b/src/app/pages/edit-hero-page/edit-hero-page.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + templateUrl: './edit-hero-page.component.html', + styleUrls: ['./edit-hero-page.component.css'] +}) +export class EditHeroPageComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/src/app/shared/components/hero-information-form/hero-information-form.component.html b/src/app/shared/components/hero-information-form/hero-information-form.component.html new file mode 100644 index 0000000..3c616fe --- /dev/null +++ b/src/app/shared/components/hero-information-form/hero-information-form.component.html @@ -0,0 +1,17 @@ +
+ + +
+ + + diff --git a/src/app/shared/components/hero-information-form/hero-information-form.component.scss b/src/app/shared/components/hero-information-form/hero-information-form.component.scss new file mode 100644 index 0000000..678b929 --- /dev/null +++ b/src/app/shared/components/hero-information-form/hero-information-form.component.scss @@ -0,0 +1,18 @@ +textarea, input { + &.ng-invalid.ng-touched { + border: 1px solid red; + } +} + +.form-field { + display: flex; + flex-direction: column; + margin-bottom: 8px; +} + +form { + padding-top: 32px; + width: 50%; + min-width: 300px; + margin: 0 auto; +} diff --git a/src/app/shared/components/hero-information-form/hero-information-form.component.spec.ts b/src/app/shared/components/hero-information-form/hero-information-form.component.spec.ts new file mode 100644 index 0000000..e750017 --- /dev/null +++ b/src/app/shared/components/hero-information-form/hero-information-form.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeroInformationFormComponent } from './hero-information-form.component'; + +describe('HeroInformationFormComponent', () => { + let component: HeroInformationFormComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HeroInformationFormComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HeroInformationFormComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/shared/components/hero-information-form/hero-information-form.component.ts b/src/app/shared/components/hero-information-form/hero-information-form.component.ts new file mode 100644 index 0000000..2b885af --- /dev/null +++ b/src/app/shared/components/hero-information-form/hero-information-form.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-hero-information-form', + templateUrl: './hero-information-form.component.html', + styleUrls: ['./hero-information-form.component.scss'] +}) + +export class HeroInformationFormComponent implements OnInit { + + constructor() {} + + ngOnInit(): void {} + +} diff --git a/src/app/shared/models/hero.model.ts b/src/app/shared/models/hero.model.ts index 7772831..358fa15 100644 --- a/src/app/shared/models/hero.model.ts +++ b/src/app/shared/models/hero.model.ts @@ -1,5 +1,5 @@ export interface Hero { - id: number; // id + id?: number; // id name: string; // 姓名 image?: string; // 圖像 hp: string; // 生命值