2016-10-17 8 views
1

私は私のサービスでObservableを持っています。ページの一部としてサイズと長さを表示したいと思います。Observableの長さ/サイズを取得してテンプレートに表示したい

public document: SomeClass[] 

getDocument(): Observable<SomeClass[]> { 
     return this._http.get(this.jsonURL) 
      .map(this.extractData) 
      .catch(this.handleError); 
    } 

<div *ngFor='let resultItem of document; let count=index'></div> 

<pagination>{{document.length}}</pagination> 

これはエラーを投げている:それは行われるべきであるどのように未定義

のプロパティ「長さ」を読み取ることができませんか?ご協力いただきありがとうございます。

答えて

0

public document: SomeClass[]

ドキュメントが初期化されていないため、長さ属性を持つオブジェクトがありません。

オブジェクトを初期化するか、テンプレート内の他の変数を使用して更新します。

private observableLegth: number = 0 

、その後

observableLength = document.length 

コンポーネントクラス内のどこか(の文書が定義されている!)

+0

これは、 "プロパティの長さがタイプ 'Observable 'に存在しません。"この回答:https://stackoverflow.com/a/40237063/5326490は.tsファイルで私のために働いていましたが、.subscribe()コールバック内で実行されるコードが非同期に実行されるため、実行の順序を考慮する必要があります。 – Lual

1

私は、文書が値を持っているかどうかを確認する* ngIfを置くことによってそれを解決することができましたObservableで非同期的に呼ばれているので、そうでないかもしれません。これは、データが後で入力されることを意味します。

<pagination *ngIf='document'>{{document.length}}</pagination> 
関連する問題