Mục tiêu
Ứng dụng tính thời gian đã sống- Nắm bắt được về các thao tác với service và router trong Angular.
Mô tả- Ứng dụng tính thời gian
Tạo ứng dụng tính thời gian đã sống.
Hướng dẫn
Bước 1: Khởi tạo project với Angular CLI (nếu đã có project thì có thể bỏ qua)
- Các bạn chạy lệnh npm i date-fns -S để cài đặt thư viện cho việc tính toán datetime.
- Các bạn chạy lệnh npm i typescript@2.9.2 -D để cài đặt thư viện typescript nếu phiên bản hiện tại < 2.9.2
Bước 2: Khởi tạo một component mới trong project và đặt tên là timelines
Khởi tạo một service mới tên là date-util.
Tạo file app-routing.module.ts (bỏ qua nếu dùng project mẫu)
Bước 3: Thay phần template của component vừa tạo bằng đoạn code sau:
<h2>Ứng dụng tính thời gian đã sống</h2> <div> <input type="text" (change)="onChange($event.target.value)"> </div> <p>{{ output }}</p>
Bước 4: Code phần logic cho component
import { Component, OnInit } from '@angular/core'; import { DateUtilService } from '../date-util.service'; @Component({ selector: 'app-timelines', templateUrl: './timelines.component.html', styleUrls: ['./timelines.component.scss'] }) export class TimelinesComponent implements OnInit { output = ''; constructor(private dateUtilService: DateUtilService) { } ngOnInit() { } onChange(value) { this.output = this.dateUtilService.getDiffToNow(value); } }
Bước 5: Thêm vào app-routing.module.ts:
const routes: Routes = [ { path: 'timelines', component: TimelinesComponent } ]; @NgModule({ imports: [RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })], exports: [RouterModule] }) export class AppRoutingModule {}
Bước 6: Thêm vào app.component.html
<nav> <a routerLink="timelines" class="link"> Ứng dụng tính thời gian </a> </nav> <router-outlet></router-outlet>
Bước 7: Thêm vào app.module.ts
@NgModule({ declarations: [ TimelinesComponent ], imports: [ BrowserModule, AppRoutingModule ], bootstrap: [AppComponent] }) export class AppModule { }
Bước 8: Thêm phần code cho date-util service:
import { Injectable } from '@angular/core'; import { addMonths, addYears, differenceInDays, differenceInMonths, differenceInYears } from 'date-fns'; @Injectable({ providedIn: 'root' }) export class DateUtilService { constructor() {} getDiffToNow(diff: string | number | Date): string { const result: string[] = []; const now = new Date(); diff = new Date(diff); const years = differenceInYears(now, diff); if (years > 0) { result.push(`${years} years`); diff = addYears(diff, years); } const months = differenceInMonths(now, diff); result.push(`${months} months`); if (months > 0) { diff = addMonths(diff, months); } const days = differenceInDays(now, diff); if (days > 0) { result.push(`${days} days`); } return result.join(' '); } }
Bước 9: Kiểm tra kết quả hiển thị trên trình duyệt
Mã nguồn tham khảo: https://github.com/codegym-vn/angular-training/tree/master/angular-service-router/src/app
Trên đây CodeGym đã cùng với bạn luyện tập tạo ứng dụng tính thời gian. Hãy chụp ảnh màn hình và nộp bài thực hành của bạn trên CodeGymX để cùng nhau luyện tập nhé!
0 Lời bình