浏览代码

24-307 Setting state with actions

ngrx
Nils Dittberner 8 年前
父节点
当前提交
7aa097ca07
共有 4 个文件被更改,包括 9 次插入25 次删除
  1. +2
    -1
      src/app/shopping-list/ngrx/shopping-list.actions.ts
  2. +5
    -2
      src/app/shopping-list/shopping-edit/shopping-edit.component.ts
  3. +2
    -13
      src/app/shopping-list/shopping-list.component.ts
  4. +0
    -9
      src/app/shopping-list/shopping-list.service.ts

+ 2
- 1
src/app/shopping-list/ngrx/shopping-list.actions.ts 查看文件

@@ -6,7 +6,8 @@ export const ADD_INGREDIENT = 'ADD_INGREDIENT';

export class AddIngredient implements Action {
readonly type = ADD_INGREDIENT;
payload: Ingredient;
constructor(public payload: Ingredient) {}
}

export type ShoppingListActions = AddIngredient;

+ 5
- 2
src/app/shopping-list/shopping-edit/shopping-edit.component.ts 查看文件

@@ -1,9 +1,11 @@
import { Component, OnInit, OnDestroy, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Subscription } from 'rxjs/Subscription';
import { Store } from '@ngrx/store';

import { Ingredient } from '../../shared/ingredient.model';
import { ShoppingListService } from '../shopping-list.service';
import * as ShoppingListActions from '../ngrx/shopping-list.actions';

@Component({
selector: 'app-shopping-edit',
@@ -17,7 +19,8 @@ export class ShoppingEditComponent implements OnInit, OnDestroy {
editedItemIndex: number;
editedItem: Ingredient;

constructor(private shoppingListService: ShoppingListService) { }
constructor(private shoppingListService: ShoppingListService,
private store: Store<{shoppingList: {ingredients: Ingredient[]}}>) { }

ngOnInit() {
this.subscription = this.shoppingListService.startedEditing.subscribe(
@@ -39,7 +42,7 @@ export class ShoppingEditComponent implements OnInit, OnDestroy {
if (this.editMode) {
this.shoppingListService.updateIngredient(this.editedItemIndex, newIngredient);
} else {
this.shoppingListService.addIngredient(newIngredient);
this.store.dispatch(new ShoppingListActions.AddIngredient(newIngredient));
}
this.editMode = false;
form.reset();


+ 2
- 13
src/app/shopping-list/shopping-list.component.ts 查看文件

@@ -1,5 +1,4 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
import { Component, OnInit } from '@angular/core';
import { Store } from '@ngrx/store';
import { Observable } from 'rxjs/Observable';

@@ -11,27 +10,17 @@ import { ShoppingListService } from './shopping-list.service';
templateUrl: './shopping-list.component.html',
styleUrls: ['./shopping-list.component.css']
})
export class ShoppingListComponent implements OnInit, OnDestroy {
export class ShoppingListComponent implements OnInit {
shoppingListState: Observable<{ingredients: Ingredient[]}>;
private subscription: Subscription

constructor(private shoppingListService: ShoppingListService,
private store: Store<{shoppingList: {ingredients: Ingredient[]}}>) { }

ngOnInit() {
this.shoppingListState = this.store.select('shoppingList');
// this.subscription = this.shoppingListService.ingredientsChanged.subscribe(
// (ingredients: Ingredient[]) => {
// this.ingredients = ingredients;
// }
// );
}

onEditItem(index: number) {
this.shoppingListService.startedEditing.next(index);
}

ngOnDestroy() {
this.subscription.unsubscribe();
}
}

+ 0
- 9
src/app/shopping-list/shopping-list.service.ts 查看文件

@@ -5,20 +5,11 @@ export class ShoppingListService {
ingredientsChanged = new Subject<Ingredient[]>();
startedEditing = new Subject<number>();
private ingredients: Ingredient[] = [];

getIngredients() {
return this.ingredients.slice();
}
getIngredient(index: number) {
return this.ingredients[index];
}

addIngredient(ingredient: Ingredient) {
this.ingredients.push(ingredient);
this.ingredientsChanged.next(this.ingredients.slice());
}

addIngredients(ingredients: Ingredient[]) {
this.ingredients.push(...ingredients);
this.ingredientsChanged.next(this.ingredients.slice());


正在加载...
取消
保存