Skip to main content

Component

angular memiliki beberapa bagian untuj menjalankan sebuah halama,. bagian ini meliputi

  • component
  • service
  • directive
  • pipe

Component (Komponen)

Fungsi:

  • UI Building Block: Mengontrol bagian tertentu dari UI (seperti kombinasi React component + JSX + CSS)
  • Struktur Terenkapsulasi: Menggabungkan template (HTML), logic (TypeScript), dan styles (CSS) dalam satu unit
  • Lifecycle Hooks: Memiliki siklus hidup seperti ngOnInit() (setara useEffect dengan dependency array kosong)

Analog React:

// React Component
function MyComponent() {
return <div>Hello React</div>;
}

// Angular Component (app.component.ts)
@Component({
selector: 'app-root',
template: `<div>Hello Angular</div>`
})
export class AppComponent {}

Service (Layanan)

Fungsi:

  • Business Logic: Menangani logika bisnis, API calls, state management (seperti custom hooks atau context di React)
  • Shared State: Data yang bisa diakses oleh multiple components (mirip Redux/Zustand tapi tanpa setup ekstra)
  • Dependency Injection: Di-inject ke component melalui constructor (lebih terstruktur daripada React context)

Analog React:

// React Custom Hook
function useUserService() {
const [users, setUsers] = useState([]);
const fetchUsers = () => {/* ... */};
return { users, fetchUsers };
}

// Angular Service (user.service.ts)
@Injectable({ providedIn: 'root' })
export class UserService {
users: User[] = [];
fetchUsers() { /* HTTP call */ }
}

Directive (Direktif)

Fungsi:

  • DOM Manipulation: Memodifikasi perilaku/penampilan elemen DOM (seperti kombinasi React props + custom hooks)

Tipe:

  • Structural Directives: Mengubah layout (ngIf, ngFor ≈ React conditional rendering & map)
  • Attribute Directives: Mengubah tampilan/style ([ngStyle] ≈ React style prop)

Contoh Custom Directive:

// Highlight Directive (seperti custom hook untuk DOM)
@Directive({ selector: '[appHighlight]' })
export class HighlightDirective {
@HostListener('mouseenter') onHover() {
this.el.nativeElement.style.background = 'yellow';
}
}

// Penggunaan di template:
<p appHighlight>Hover me!</p>

Pipe (Fungsi Transformasi)

Fungsi:

  • Data Transformation: Memformat data untuk ditampilkan (seperti utility function di React yang dipakai di JSX)
  • Pure Function: Tidak mengubah data asli (mirip konsep memoization)
  • Built-in Pipes: date, currency, json (≈ library seperti date-fns atau formatCurrency)

Analog React:

// React: Utility function in JSX
<p>{formatDate(user.birthday)}</p>

// Angular Pipe (date-format.pipe.ts)
@Pipe({ name: 'dateFormat' })
export class DateFormatPipe implements PipeTransform {
transform(value: Date): string {
return new Date(value).toLocaleDateString();
}
}

// Penggunaan di template:
<p>{{ user.birthday | dateFormat }}</p>

📌 Mapping Konsep React → Angular

Konsep ReactAnalog AngularPerbedaan Utama
ComponentComponentAngular component = HTML + CSS + TS
Hooks/Custom HooksServiceService di-inject via DI system
Context/ReduxService + RxJSAngular punya RxJS terintegrasi
JSX Props@Input()/@Output()Two-way binding dengan [(ngModel)]
useEffectLifecycle HooksngOnChanges() untuk prop changes
Utility FunctionsPipePipe digunakan di template
HOC/Render PropsDirectiveDirective manipulasi DOM langsung

💡 Tips untuk React Developers

  • Component = Gabungan dari React component + CSS module
  • Service = Gantinya custom hooks + context API
  • Directive = Alternatif untuk prop drilling/HOC
  • Pipe = Utility function yang dipakai di template

Contoh integrasi

// Parent Component (React-like props)
@Component({ /* ... */ })
export class ParentComponent {
@Input() title: string;
@Output() clicked = new EventEmitter();
}

// Child Component
<app-child
[title]="'Hello'"
(clicked)="onClick()">
</app-child>