Angular çå¹²åå离ä¸å ç» | AIçæåç¿»è¯
Angular ä½¿ç¨ componentsãservices å HTML templatesï¼å 为å®ä¸¥æ ¼éµå¾ª separation of concerns ååââè¿ä½¿å¾å¤§ååºç¨æ´å®¹æç»´æ¤ãæµè¯ãæ©å±åå¤ç¨ã
以䏿¯ æ¯ä¸ªé¨ååå¨çåå 以å å®ä»¬ä¹é´å¦ä½å ³è çæ¸ æ°åè§£ï¼2025â2026 ç°ä»£ Angular 飿 ¼ï¼ï¼
çå®å ³ç³»ââå®ä»¬å¦ä½ååå·¥ä½
å° component è§ä¸ºå±å¹ä¸å°åç æºè½ç»çï¼
ç¨æ·çå° â Template (HTML) ââââ
â data binding / events
â
Component (.ts class)
â
Business logic / data âââ
â
Service(s)
示ä¾ï¼Product List 页é¢
// product-list.component.ts â Component
import { Component } from '@angular/core';
import { ProductService } from './product.service';
@Component({
selector: 'app-product-list',
templateUrl: './product-list.component.html',
styleUrls: ['./product-list.component.css'],
standalone: true, // modern style
imports: [CommonModule, ProductCardComponent]
})
export class ProductListComponent {
products$ = this.productService.getProducts(); // â uses service
constructor(private productService: ProductService) {}
}
<!-- product-list.component.html --> â Template (HTML)
<div class="grid">
@for (product of products$ | async; track product.id) {
<app-product-card [product]="product" />
}
@empty {
<p>No products found</p>
}
</div>
// product.service.ts â Service
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class ProductService {
constructor(private http: HttpClient) {}
getProducts(): Observable<Product[]> {
return this.http.get<Product[]>('/api/products');
}
addToCart(product: Product) { ⦠}
calculateDiscount(price: number) { ⦠}
}
为ä»ä¹ä¸æææå 容齿¾å¨ component éé¢ï¼
å¿«éæ»ç»ââç°ä»£ Angular çé»éæ³å
- Template (HTML) â âå® çèµ·æ¥ æä¹æ ·ï¼â
- Component (.ts) â âè¿ä¸ªå±å¹ å¦ä½è¡ä¸ºï¼æ¾ç¤ºä»ä¹æ°æ®ï¼ç¹å»æ¶åçä»ä¹ï¼â
- Service (.ts) â âå¦ä½ è·å/转æ¢/å ±äº« æ°æ®ï¼business rule æ¯ä»ä¹ï¼â
Component æ¥æ template Service 被å¤ä¸ª components æ¥æï¼ææ´ä¸ªåºç¨ï¼
è¿ç§ç»ææ¯ Angular åºç¨å³ä½¿å¢é¿å°æ°ç¾ä¸ª components ä»è½ä¿æå¯ç»´æ¤æ§ç主è¦åå ã
è¿ç§å离ç°å¨ææä¹äºåï¼æ³è¦ä¸ä¸ªæ´å ·ä½ç signals / forms / routing 示ä¾åï¼ð
