Dalam pengembangan aplikasi menggunakan framework Angular, kita seringkali memerlukan cara untuk menginisialisasi konten di dalam komponen. Salah satu cara yang dapat digunakan adalah dengan menggunakan direktif ng-content
. Dalam artikel ini, kita akan belajar bagaimana menggunakan ng-content
untuk menginisialisasi konten di dalam komponen Angular.
Menginisialisasi Konten dengan ng-content
Kita dapat menggunakan ng-content
untuk menginisialisasi konten di dalam komponen Angular. Contohnya, kita memiliki komponen fa-input
yang memproyeksi input HTML dan ingin memberikan gaya pada input tersebut.
<fa-input>
<input type="text">
</fa-input>
Dalam kasus ini, kita dapat menggunakan ng-content
untuk menginisialisasi konten input di dalam komponen fa-input
. Kita dapat mengakses konten dengan cara berikut:
<fa-input>
<ng-content></ng-content>
</fa-input>
Namun, perlu diingat bahwa gaya yang diberikan pada komponen tidak akan terlihat jika kita hanya menggunakan ng-content
tanpa adanya gaya. Untuk itu, kita harus menambahkan gaya pada komponen dengan cara berikut:
<fa-input>
<ng-content>
<!-- Gayakan komponen -->
{{ ng-content }}
</ng-content>
</fa-input>
Dalam contoh di atas, kita menggunakan template {{ ng-content }}
untuk menginisialisasi konten input di dalam komponen fa-input
.
Menginteraksi dengan Konten yang Diproyeksikan
Setelah kita dapat menginisialisasi konten input di dalam komponen fa-input
, kita juga perlu menginteraksi dengan konten tersebut. Misalnya, kita ingin mengetahui apakah input tersebut memiliki fokus atau tidak.
Dalam kasus ini, kita dapat menggunakan direktif inputRef
untuk mengetahui apakah input memiliki fokus atau tidak. Kita dapat membuat direktif inputRef
sebagai berikut:
@Directive({
selector: '[inputRef]'
})
export class InputRef {
private focus = false;
@HostListener('focus', ['$event'])
onFocus(event) {
this.focus = true;
}
@HostListener('blur', ['$event'])
onBlur(event) {
this.focus = false;
}
}
Dalam direktif inputRef
, kita menggunakan @HostListener
untuk mendeteksi event focus
dan blur
. Ketika input memiliki fokus, nilai this.focus
akan menjadi true
, dan ketika input kehilangan fokus, nilai this.focus
akan menjadi false
.
Menginisialisasi Konten dengan Multi-Slot
Kita juga dapat menginisialisasi konten di dalam komponen fa-input
menggunakan multi-slot. Dalam kasus ini, kita ingin memproyeksikan tidak hanya input HTML tapi juga icon di dalam input.
<fa-input>
<input type="text">
<i class="icon"></i>
</fa-input>
Dalam contoh di atas, kita dapat menggunakan ng-content
untuk menginisialisasi konten di dalam komponen fa-input
. Kita dapat mengakses konten dengan cara berikut:
<fa-input>
<ng-content select="input"></ng-content>
<ng-content select=".icon"></ng-content>
</fa-input>
Dalam contoh di atas, kita menggunakan select
untuk menginisialisasi konten input dan icon. Kita dapat juga menggunakan *
untuk menginisialisasi konten yang tidak sesuai dengan selektor.
Kesimpulan
Dalam artikel ini, kita belajar bagaimana menggunakan direktif ng-content
untuk menginisialisasi konten di dalam komponen Angular. Kita juga belajar bagaimana menginteraksi dengan konten yang diproyeksikan dan menginisialisasi konten dengan multi-slot. Dengan menggunakan ng-content
, kita dapat membuat aplikasi yang lebih interaktif dan fleksibel.
Lainnya
Jika Anda ingin mengetahui lebih lanjut tentang fitur-fitur Angular lainnya, silakan kunjungi halaman Angular News, Free courses and PDFs.