Chuyển đến nội dung chính

Ôn tập Angular: Service và Depencency Injection - Part 4

Angular Servcie

Angular Service là một class có chức năng cụ thể, được thiết kế để thực hiện các tác vụ không liên quan trực tiếp đến giao diện người dùng (UI) hoặc logic ứng dụng chính.

Tạo 1 service
ng g s <service-name>
Ví dụ
ng g s logger
Khai báo thêm name cho loggerService
import { Injectable } from '@angular/core';

@Injectable({
  providedIn: 'root'
})
export class LoggerService {
  public name: string = "logger";
  constructor() { }
}

providedIn: 'root': Đây là một thuộc tính của decorator @Injectable. Nó chỉ định rằng service này sẽ được cung cấp bởi Injector Root của ứng dụng. Nghĩa là, Angular sẽ tự động tạo một instance duy nhất của service này khi ứng dụng khởi chạy và instance này sẽ có phạm vi ứng dụng (application scope). Bất kỳ thành phần nào trong ứng dụng đều có thể yêu cầu service này thông qua Dependency Injection.

Hoặc bạn có thể inject vào app.config.ts

import { ApplicationConfig, provideZoneChangeDetection } from '@angular/core';
import { provideRouter } from '@angular/router';

import { routes } from './app.routes';
import { LoggerService } from './services/logger.service';

export const appConfig: ApplicationConfig = {
  providers: [provideZoneChangeDetection({ eventCoalescing: true }), 
    provideRouter(routes),
    { provide: LoggerService, useValue: { name: 'test'}}
  ]
};

Ví dụ

Trong ví dụ này, chúng ta sẽ sử dụng thư viện faker-js để generate fake data

Cài đặt package
npm install @faker-js/faker --save
Tạo Service để tạo dữ liệu ngẫu nhiên

Trong Angular, một cách tổ chức tốt là sử dụng service để tạo dữ liệu ngẫu nhiên. Bạn có thể tạo một service như sau:

ng generate service fake-data
Sau đó, chỉnh sửa file fake-data.service.ts, generate fake fruit data
import { Injectable } from '@angular/core';
import { Faker, faker } from '@faker-js/faker';

@Injectable({
  providedIn: 'root'
})
export class FakeDataService {

  constructor() { }

  generateRandomFruit(): { name: string, price: string } {
    
    const fruitName = faker.food.fruit();
    const priceInVND = faker.finance.amount({
      min: 10000,
      max: 300000
    });
    return {
      name: fruitName,
      price: `${priceInVND} VNĐ`
    };
  }
}
Sử dụng Service trong Component

Sau khi tạo xong service, bạn có thể sử dụng FakeDataService trong component của mình để hiển thị dữ liệu ngẫu nhiên. Ví dụ:

ng generate component fruit-list
Trong file fruit-list.component.ts:
import { Component, OnInit } from '@angular/core';
import {  NgFor } from '@angular/common';
import { FakeDataService } from '../services/fake-data.service';

@Component({
  selector: 'app-fruit-list',
  standalone: true,
  imports: [NgFor],
  templateUrl: './fruit-list.component.html',
  styleUrl: './fruit-list.component.scss'
})
export class FruitListComponent implements OnInit{
  fruits: { name: string, price: string }[] = [];

  constructor(private fakeDataService: FakeDataService) { }

  ngOnInit(): void {
    this.generateFruits();
  }

  generateFruits(): void {
    for (let i = 0; i < 10; i++) {
      this.fruits.push(this.fakeDataService.generateRandomFruit());
    }
  }
}
File fruit-list.component.html, bạn có thể hiển thị danh sách fruit và price như sau:
<div>
  <h2>Danh sách trái cây</h2>
  <ul>
    <li *ngFor="let fruit of fruits">
      {{ fruit.name }} - {{ fruit.price }}
    </li>
  </ul>
  <button (click)="generateFruits()">Add new fruit</button>
</div>

Tham khảo

Angular Bài 5 - Services và Dependency Injection

Config based service implementation in Angular 

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.