Pada modul ini kita akan melakukan restruktur component recipe-list dan recipe-item.
Saat ini component recipe-list memuat code recipe-item. Kita akan pindahkan kode tersebut ke component recipe-item.
Disini kita akan kembali menggunakan data passing antar komponent.
Buka file recipe-item.component.html, isi dengan code yang di-cut dari file recipe-list.component.html
<a href="#" class="list-group-item clearfix"> <div class="float-start"> <h4 class="list-group-item-heading">{{recipe.name}}</h4> <p class="list-group-item-text">{{recipe.description}}</p> </div> <span class="float-end"> <img src="{{recipe.imgPath}}" alt="" class="img-fluid" style="max-height: 50px;"> </span> </a>
Buka file recipe-list.component.html, ubah code menjadi seperti dibawah.
Data Binding dari Parent ke child component dengan menggunakan property binding.
<div class="row"> <div class="col-xs-12"> <button class="btn btn-success">New Recipe</button> </div> </div> <hr> <div class="row"> <div class="col-xs-12"> <app-recipe-item *ngFor="let recipeLoop of recipes" [recipe]="recipeLoop"></app-recipe-item> </div> </div>
Kemudian buka file recipe-detail.component.ts, ubah code seperti berikut
//tambahkan import modul Input dan Recipe bila tidak ditambahkan otomatis oleh ID import { Component, OnInit, Input } from '@angular/core'; import { Recipe } from '../../recipe.model'; @Component({ selector: 'app-recipe-item', templateUrl: './recipe-item.component.html', styleUrls: ['./recipe-item.component.css'] }) export class RecipeItemComponent implements OnInit { //data binding dari recipe-list.component.html @Input() recipe!: Recipe; constructor() {} ngOnInit(): void { } }
Untuk dokumentasi component interaction dapat dilihat disini.