Baru-baru ini, saya harus mengimplementasikan tampilan popover dengan banyak variasi berdasarkan kondisi yang kompleks. Menggunakan ngSwitch, dalam hal ini, tidak mungkin, dan menggunakan ngIftidak dapat dibaca dan bertele-tele.
Inilah cara saya memutuskan untuk mendekati masalah ini. Langkah pertama adalah membuat direktif bernama TemplateIdDirective:
@Directive({
selector: 'ng-template[id]',
standalone: true
})
export class TemplateIdDirective {
@Input() id: string;
tpl = inject(TemplateRef);
}
<-- trace-information.component.html -->
<div>
<p>{{ header }}</p>
<ng-template [ngTemplateOutlet]="body"></ng-template>
</div>
<ng-template id="variation-one">...</ng-template>
<ng-template id="variation-two">...</ng-template>
<ng-template id="variation-three">...</ng-template>
<ng-template id="variation-four">...</ng-template>
<ng-template id="variation-five">...</ng-template>
@Component({
selector: 'app-trace-information',
standalone: true,
imports: [TemplateIdDirective],
templateUrl: './trace-information.component.html'
})
export class TraceInformationComponent {
header = '';
@Input() traceInfo: TraceInfo;
@ViewChildren(TemplateIdDirective)
templates: QueryList<TemplateIdDirective>;
private cdr = inject(ChangeDetectorRef);
ngAfterViewInit() {
this.resolveView();
}
private resolveView() {
// All the complex conditions are defined here.
// In real life is way more complicated than that.
// This is only for illustration
if(...) {
this.header = '...';
this.body = this.getTemplate('variation-one');
} else if(...) {
if(...) {
this.header = '...';
this.body = this.getTemplate('variation-two');
} else {
this.header = '...';
this.body = this.getTemplate('variation-three');
}
}
this.cdr.detectChanges();
}
private getTemplate(id: string) {
return this.templates.find((tpl) => tpl.id === id).tpl;
}
}
Ikuti saya di Medium atau Twitter untuk membaca lebih lanjut tentang Angular dan JS!
Mulailah perjalanan inovasi dan kesuksesan yang mendebarkan saat Anda memanfaatkan potensi yang belum dimanfaatkan dari platform tanpa kode yang mengejutkan ini. Izinkan saya berbagi cerita dengan Anda tentang Sapna, seorang pengusaha wanita yang luar biasa.
Minggu ini, saya menerima email dari anggota daftar email harian. Mereka ingin tahu: Sumber daya apa yang Anda kunjungi setiap hari, setiap minggu, dan setiap bulan? Pertanyaan bagus! Saya senang untuk mencoba membagikan beberapa wawasan tentang alur kerja saya & sumber daya teratas yang saya gunakan.
Berapa kali Anda membuang botol plastik, toples kaca, kaleng aluminium, atau paket energi hijau tanpa berpikir dua kali? Berapa kali Anda berharap bisa mendapatkan sesuatu sebagai imbalan untuk mendaur ulangnya? Jika Anda seperti kebanyakan orang, jawabannya mungkin berkali-kali. Daur ulang sering dianggap merepotkan, tugas, atau tugas yang tidak membawa manfaat langsung atau nyata.
“Hai Siri, mainkan Me Dive oleh Olivia Dean.” Saat itu Mei 2021 ketika saya memulai magang di Future Academy Africa di Akure, Nigeria.
Minggu lalu saya melihat siaran pers, dikirim melalui PressGazette (situs web berita media Inggris). Artikel tersebut mengumumkan bahwa Acast, perusahaan hosting dan periklanan podcast Scandi, akan memimpin konsorsium penerbit "mungkin yang paling berpengaruh" dalam podcasting.
Kita sering menemukan diri kita berjuang untuk menerapkan apa yang kita tahu baik untuk kita. Dari memberi tahu orang penting bahwa kita mencintai mereka hingga mengingat untuk berbicara seperti bajak laut, akan selalu ada orang yang mengklaim bahwa acara sehari, seminggu, atau sebulan tidak diperlukan karena mereka sudah melakukan hal-hal itu.