2017-03-26 17 views
-3

のプロパティを読み取ることができません「配信停止」これは私がこのコンポーネントを残して、他のコンポーネントをロードする際に角度2上に構築された電子商取引のカートで、私は私が試したエラー角度2:未定義

EXCEPTION: Uncaught (in promise): Error: Error in ./ProductsComponent class ProductsComponent - inline template:11:4 caused by: Cannot read property 'unsubscribe' of undefined

を取得プライベートサブスクリプションを削除する:サブスクリプションとngOnDestroy。しかし、それでも同じエラーが発生します。

import { Component, OnInit, OnDestroy } from '@angular/core'; 
    import { Products } from './products'; 
    import { PRODUCTS } from './product_list'; 
    import { Subscription } from 'rxjs/Rx'; 
    import { PaginationService } from './pagination.service'; 
    import { Pagination } from './pagination'; 
    import 'rxjs/add/operator/switchMap'; 

    @Component({ 
    selector: 'any-products', 
    templateUrl: './products.component.html', 
    styleUrls: ['./products.component.css'] 
    }) 

    export class ProductsComponent implements OnInit, OnDestroy { 

    color: string; 
    allProducts = PRODUCTS; 
    private subscription: Subscription; 
    paginationNow : Pagination = this.paginationService.CreatePaginationNow(this.paginationService.productPerPage); 
    products : Array<Products> = this.allProducts.slice((this.paginationNow.paginationLowerLimit-1),this.paginationNow.paginationHigherLimit); 

    constructor(private paginationService : PaginationService) { } 

    ngOnInit() { 
     this.subscription = this.paginationService.pushedPagination.subscribe(
     PaginationNow => { 
      this.paginationNow = PaginationNow; 
      this.products = this.allProducts.slice((this.paginationNow.paginationLowerLimit-1),this.paginationNow.paginationHigherLimit); 
     }   
    );  
    } 

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

enter image description here

+0

こんにちはゲリラ、質問をしていただきありがとうございます。私は角2を初めて使っています。あなたはさらに詳しく説明できますか? –

+0

エラーメッセージに、未定義の登録解除を読み取ることができないと表示されます。私はあなたがngOnDestroy()にある呼び出しを見ることができます。それで、あなたのサービスがおそらく観察可能なものを返すわけではないと私は思う。退会した行のブレークポイントを設定して、サブスクリプションが開始され、それが観測可能かどうかを確認してください。 – Guerrilla

+0

"typeof subscription"を実行し、オブジェクトを返しました。 –

答えて

0

私はこれを解決しました。

「ProductsComponent - インラインテンプレート:11:4」

私は、製品コンポーネントにサブスクリプションでの問題を探していましたが、本当の問題は、ここでは提供されない製品コンポーネントの子コンポーネントにありました。

製品コンポーネントの子ルート(pagination.component.ts)に問題ました:

ngOnInit() { 
    this.paginationService.pushedPagination.subscribe(
     PaginationNow => { 
      this.paginationNow = PaginationNow;  
     } 
    ); 

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

私が作った変更:

ngOnInit() {  
    this.subscription = this.paginationService.pushedPagination 
     .subscribe(
       PaginationNow => { 
        this.paginationNow = PaginationNow;  
       } 
     ); 

により角度2トラブルシューティングと私の未熟さに。 (インラインテンプレート:11:4)