浏览代码

10-106 Use cross component communication for selecting recipe

tags/before_ngrx
父节点
当前提交
c40cbdc10d
共有 5 个文件被更改,包括 16 次插入15 次删除
  1. +5
    -5
      src/app/recipes/recipe-list/recipe-item/recipe-item.component.ts
  2. +1
    -7
      src/app/recipes/recipe-list/recipe-list.component.ts
  3. +3
    -0
      src/app/recipes/recipe.service.ts
  4. +1
    -2
      src/app/recipes/recipes.component.html
  5. +6
    -1
      src/app/recipes/recipes.component.ts

+ 5
- 5
src/app/recipes/recipe-list/recipe-item/recipe-item.component.ts 查看文件

@@ -1,5 +1,6 @@
import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';
import { Component, OnInit, Input } from '@angular/core';
import { Recipe } from '../../recipe.model';
import { RecipeService } from '../../recipe.service';

@Component({
selector: 'app-recipe-item',
@@ -8,15 +9,14 @@ import { Recipe } from '../../recipe.model';
})
export class RecipeItemComponent implements OnInit {
@Input() recipe: Recipe;
@Output() recipeSelected = new EventEmitter<void>();

constructor() { }
constructor(private recipeService: RecipeService) { }

ngOnInit() {
}

onSelected() {
this.recipeSelected.emit();
this.recipeService.recipeSelected.emit(this.recipe);
}

}

+ 1
- 7
src/app/recipes/recipe-list/recipe-list.component.ts 查看文件

@@ -1,4 +1,4 @@
import { Component, OnInit, EventEmitter, Output } from '@angular/core';
import { Component, OnInit } from '@angular/core';
import { Recipe } from '../recipe.model';
import { RecipeService } from '../recipe.service';

@@ -9,16 +9,10 @@ import { RecipeService } from '../recipe.service';
})
export class RecipeListComponent implements OnInit {
recipes: Recipe[];
@Output() recipeWasSelected = new EventEmitter<Recipe>();

constructor(private recipeService: RecipeService) { }

ngOnInit() {
this.recipes = this.recipeService.getRecipes();
}

onRecipeSelected(recipe: Recipe) {
this.recipeWasSelected.emit(recipe);
}

}

+ 3
- 0
src/app/recipes/recipe.service.ts 查看文件

@@ -1,6 +1,9 @@
import { Recipe } from "./recipe.model";
import { EventEmitter } from "@angular/core";

export class RecipeService {
recipeSelected = new EventEmitter<Recipe>();

private recipes: Recipe[] = [
new Recipe('A Test Recipe', 'This is simlpy a test', 'http://maxpixel.freegreatpicture.com/static/photo/1x/Recipe-Soup-Noodle-Curried-Spicy-Chicken-Khaosoi-2344152.jpg'),
new Recipe('Another Test Recipe', 'This is simlpy a test', 'http://maxpixel.freegreatpicture.com/static/photo/1x/Recipe-Soup-Noodle-Curried-Spicy-Chicken-Khaosoi-2344152.jpg')


+ 1
- 2
src/app/recipes/recipes.component.html 查看文件

@@ -1,7 +1,6 @@
<div class="row">
<div class="col-md-5">
<app-recipe-list
(recipeWasSelected)="selectedRecipe = $event"></app-recipe-list>
<app-recipe-list></app-recipe-list>
</div>
<div class="col-md-7">
<app-recipe-detail


+ 6
- 1
src/app/recipes/recipes.component.ts 查看文件

@@ -12,9 +12,14 @@ import { RecipeService } from './recipe.service';
export class RecipesComponent implements OnInit {
selectedRecipe: Recipe;

constructor() { }
constructor(private recipeService: RecipeService) { }

ngOnInit() {
this.recipeService.recipeSelected.subscribe(
(recipe: Recipe) => {
this.selectedRecipe = recipe;
}
);
}

}

正在加载...
取消
保存