<c1-component></c1-component>
<c2-component></c2-component>
import { EventEmitter } from '@angular/core';
import { Recipe } from './recipe.model';
export class RecipeService {
recipeSelected = new EventEmitter<Recipe>();
private recipes: Recipe[] = [
new Recipe('A Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg'),
new Recipe('Another Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg')
];
getRecipes(){
return this.recipes.slice();
}
}
import { Component, OnInit } from '@angular/core';
import { Recipe } from './recipe.model';
import { RecipeService } from './recipe.service';
@Component({
selector: 'app-recipes',
templateUrl: './recipes.component.html',
styleUrls: ['./recipes.component.css'],
providers: [ RecipeService ]
})
export class RecipesComponent implements OnInit {
selectedRecipe: Recipe;
constructor(private recipeService: RecipeService) { }
ngOnInit() {
this.recipeService.recipeSelected.subscribe(
(recipe: Recipe) => {
this.selectedRecipe = recipe;
}
);
}
}
constructor(private recipeService: RecipeService) { }
this.recipeService.recipeSelected.subscribe(...);
<a
href="#"
class="list-group-item clearfix"
(click)="onSelected()">
<div class="pull-left">
<h4 class="list-group-item-heading">{{ recipe.name }}</h4>
<p class="list-group-item-text">{{ recipe.description }}</p>
</div>
<span class="pull-right">
<img
[src]="recipe.imagePath"
alt="{{ recipe.name }}"
class="img-responsive"
style="max-height: 50px;">
</span>
</a>
import { Component, OnInit, Input } from '@angular/core';
import { Recipe } from '../../recipe.model';
import { RecipeService } from '../../recipe.service';
@Component({
selector: 'app-recipe-item',
templateUrl: './recipe-item.component.html',
styleUrls: ['./recipe-item.component.css']
})
export class RecipeItemComponent implements OnInit {
@Input() recipe: Recipe;
constructor(private recipeService : RecipeService) { }
ngOnInit() {
}
onSelected() {
this.recipeService.recipeSelected.emit(this.recipe);
}
}
<c2-component></c2-component>
import { EventEmitter } from '@angular/core';
import { Recipe } from './recipe.model';
export class RecipeService {
recipeSelected = new EventEmitter<Recipe>();
private recipes: Recipe[] = [
new Recipe('A Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg'),
new Recipe('Another Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg')
];
getRecipes(){
return this.recipes.slice();
}
}
import { Component, OnInit } from '@angular/core';
import { Recipe } from './recipe.model';
import { RecipeService } from './recipe.service';
@Component({
selector: 'app-recipes',
templateUrl: './recipes.component.html',
styleUrls: ['./recipes.component.css'],
providers: [ RecipeService ]
})
export class RecipesComponent implements OnInit {
selectedRecipe: Recipe;
constructor(private recipeService: RecipeService) { }
ngOnInit() {
this.recipeService.recipeSelected.subscribe(
(recipe: Recipe) => {
this.selectedRecipe = recipe;
}
);
}
}
constructor(private recipeService: RecipeService) { }
this.recipeService.recipeSelected.subscribe(...);
<a
href="#"
class="list-group-item clearfix"
(click)="onSelected()">
<div class="pull-left">
<h4 class="list-group-item-heading">{{ recipe.name }}</h4>
<p class="list-group-item-text">{{ recipe.description }}</p>
</div>
<span class="pull-right">
<img
[src]="recipe.imagePath"
alt="{{ recipe.name }}"
class="img-responsive"
style="max-height: 50px;">
</span>
</a>
import { Component, OnInit, Input } from '@angular/core';
import { Recipe } from '../../recipe.model';
import { RecipeService } from '../../recipe.service';
@Component({
selector: 'app-recipe-item',
templateUrl: './recipe-item.component.html',
styleUrls: ['./recipe-item.component.css']
})
export class RecipeItemComponent implements OnInit {
@Input() recipe: Recipe;
constructor(private recipeService : RecipeService) { }
ngOnInit() {
}
onSelected() {
this.recipeService.recipeSelected.emit(this.recipe);
}
}