2017-11-12 10 views
0

내 기능에서 상태를 선택할 때 'take'속성을 사용하려고하는데 오류가 발생했습니다. Property 'take' does not exist on type 'Store<State>. 제발, 아무도 무슨 일이 일어나고 있는지 알 수 없습니까? 그 이유는 사용자가 서식 파일을 서식에 변경하는 "공간 추가"단추를 클릭했는지 식별해야하기 때문입니다. 이 모드는 부모 템플릿을 변경하기 때문에 @ ngrx/store로 관리합니다. 'take'속성이 'Store <State>'에 없습니다. ngrx/store

내 코드 :

import { Component, Input, OnInit, OnDestroy } from '@angular/core'; 
import { NgForm } from '@angular/forms'; 
import { Store } from '@ngrx/store'; 
import { Subscription } from 'rxjs/Subscription'; 

    import { Space } from '../../../shared/space.model'; 
    // import { SpacesService } from '../../spaces.service'; 
    import * as SpacesActions from '../../store/spaces.actions'; 
    import * as fromSpaces from '../../store/spaces.reducers'; 

    @Component({ 
     selector: 'app-space-item', 
     templateUrl: './space-item.component.html', 
     styleUrls: ['./space-item.component.scss'] 
    }) 
    export class SpaceItemComponent implements OnInit, OnDestroy { 
     @Input() space: Space; 
     @Input() index: number; 
     private addMode: boolean; 
     private editMode = false; 
     // updatedSpaceName: string; 
     // updatedSpace: Space; 
     private subscription: Subscription; 
     updatedSpaceName: string; 
     updatedPicture: string; 

     constructor(
        // private spacesService: SpacesService, 
        private store: Store<fromSpaces.FeatureState>) { } 

     ngOnInit() { 
     this.subscription = this.store.select('spaces') 
      .take(1) 
      .subscribe(
      data => { 
       if (data.addMode) { 
       this.addMode = data.addMode; 
       } else { 
       this.addMode = false; 
       } 
      } 
     ); 
     } 
     ngOnDestroy() { 
     this.subscription.unsubscribe(); 
     } 

     onEnableEdit() { 
     this.editMode = true; 

     this.updatedSpaceName = this.space.name; 
     this.updatedPicture = this.space.picture; 
     // console.log(this.updatedSpace); 

     } 
     onUpdate() { 
     this.onCancelEdit(); 
     const updatedSpace = new Space(this.updatedSpaceName, this.updatedPicture); 
     // this.spacesService.updateSpace(updatedSpace, this.index); 
     this.store.dispatch(new SpacesActions.UpdateSpace({index: this.index, updatedSpace})); 
     } 

     onCancelEdit() { 
     this.editMode = false; 
     // this.updatedSpace = this.space; 
     } 

     onCancelAdd() { 
     // this.spacesService.addModeActivated.next(false); 
     this.store.dispatch(new SpacesActions.SwitchAddMode(false)); 
     } 

     onDelete() { 
     // this.spacesService.deleteSpace(this.index); 
     this.store.dispatch(new SpacesActions.DeleteSpace(this.index)); 
     } 

     onAddSpace(form: NgForm) { 
     const value = form.value; 
     const newSpace: Space = new Space(value.spaceName); 

     // this.spacesService.addSpace(newSpace); 
     this.store.dispatch(new SpacesActions.AddSpace(newSpace)); 
     } 
    } 

답변

6

시도는 그것을

import 'rxjs/add/operator/take'; 
를 가져