Angular 6 / FirestoreオブジェクトデータはHTMLで表示されません

ローガンキッチン

Firestoreのno-SQLデータベースの「articles」コレクションに一連の「article」ドキュメントが保存されています。これらの記事を、angularfire2(^ 5.0.0-rc / 10)とfirebase(^ 5.0.4)を使用してAngular 6(^ 6.0.3)プロジェクトにプルしています。データはオブザーバブルとしてサービスに保持され、さまざまなコンポーネントに取り込まれ、必要に応じてオブジェクトに変換されます。

補間とデータバインディングを使用してオブジェクトのプロパティをHTMLで表示しようとすると、奇妙な問題が発生します。単に何も表示されません。メニューから記事タイルをクリックし、記事IDを文字列としてサービスに渡してから、対応するIDを持つ記事を指すオブザーバブルを作成します。次に、コンポーネントクラスのobservableをサブスクライブし、データをオブジェクトとして保存します。オブジェクトはそれ自体で正常に印刷されますが、異なるプロパティを参照すると、データがないかのように機能します。

これは私のコンポーネントのコントローラーからのコードです:

article: any = {};
articleString: string;

selectArticle(articleId: string) {
            this.articlesService.getArticleObs(articleId).subscribe((data) => {
                this.article = data;
                this.articleString = JSON.stringify(this.article);
            });
        }

サービスでこの関数を呼び出すもの:

getArticleObs(articleId: string) {
        console.log('article id sent to service: ' + articleId);
        this.articleDoc = this.db.doc(`articles/${articleId}`);
        return this.articleDoc.valueChanges();
    }

ここにHTMLで表示する必要があります。

<ng-template #article>
        <div class="article-body">
            <div fxLayout="row">
                <div class="article-image">
                    <img [src]="article?.game.image">
                </div>
                <div class="article-header" fxLayout="column">
                    <div>{{this.article?.title}}</div>
                    <h1>{{ article?.game?.title }} Review:</h1>
                    <div fxLayout="row">
                        <h2>Title:{{ article?.title }}</h2>
                        <h2>Author:{{ article?.author }}</h2>
                    </div>
                </div>
            </div>
            <div class="article-content" [innerHTML]="article?.content"></div>
            <div class="article-comments">
                Comments:{{ article?.comments }}
            </div>
        </div>
        <h3>{{ articleString }}</h3>
    </ng-template>

console.log(article)を実行して、完全なオブジェクトを取得できます。

ここに画像の説明を入力してください

また、{{articleString}}を使用して画面に完全なオブジェクトが表示されますが、他の補間またはデータバインディングの場合はデータがありません。

私のページはどのように見えるか

HTMLがオブジェクトのプロパティが空の文字列であると考える理由を誰かに教えてもらえますか?

更新:

私はコントローラーでこれを試しました:

selectArticle(articleId: string) {
            this.articlesService.getArticleObs(articleId).subscribe((data) => {
                this.article = data;
                console.log(1 + this.article);
                this.articleString = JSON.stringify(this.article);
                console.log(2 + this.article);
            });
            console.log(3 + this.article);
        }

コンソールでの結果は、それが非同期の問題であると私に思わせます。3は、最初に空のオブジェクトで印刷します。1は次に完全なオブジェクトで印刷し、次に2も完全なオブジェクトで印刷します。

Michael Doye

試すことができる2つのこと(まだ行っていない場合):

1)括弧を使用します(すべてのバインディングに対して同じことを行います):

<h1>{{ (article)?.game?.title }} Review:</h1>

2)asyncパイプを使用してObservableをアンラップし、selectArticleメソッドを変更します

selectArticle(articleId: string) {
  // Don't subscribe here
  this.article = this.articlesService.getArticleObs(articleId);
}

テンプレート内(すべてのバインディングに対して同じことを行います):

<h1>{{ (article | async)?.game?.title }} Review:</h1>

補足:コードにもタイプミスがあります。次の行です。

<div>{{this.article?.title}}</div>

使用しないでください this

<div>{{article?.title}}</div>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular 6:データはフロントエンドに表示されません

分類Dev

Angular 6:異なるコンポーネントのJSONオブジェクトから個々のデータをフェッチできません

分類Dev

Angular6-ngIfはオブジェクトを破壊しません

分類Dev

Angular 6Jsonデータをオブジェクトに変換します

分類Dev

Angular5はHTMLへのインターフェースオブジェクトを表示できません

分類Dev

Angular 6のオブジェクトのローカル配列を反復処理できませんか?

分類Dev

Angular6アップグレードの問題:プロパティ「データ」がタイプ「オブジェクト」に存在しません

分類Dev

Firebase / Angular:メッセージはHTMLで表示されませんが、メッセージオブジェクトが含まれています

分類Dev

Angular FIrebase5オブジェクトのキーが表示されていません。削除できません

分類Dev

非同期パイプはAngular6で[オブジェクトオブジェクト]を取得します

分類Dev

Angular 6のjsonオブジェクトからのヘッダーシーケンスに基づいてテーブル行データを表示するにはどうすればよいですか?

分類Dev

Angular 6は、提供されたオブジェクトからドロップダウンリスト値を自動的に選択/バインドすることはできません

分類Dev

Angular6の更新仕様[オブジェクトErrorEvent]がスローされました

分類Dev

Angular 6エラー:タイプ 'string'の異なるサポートオブジェクトが見つかりません

分類Dev

ANGULAR 6:エラーTS2315:タイプ「ModuleWithProviders」はジェネリックではありません

分類Dev

Angular6の子モジュールのアプリモジュール内で宣言されたディレクティブを使用できません

分類Dev

解析[オブジェクトオブジェクト] Angular 6

分類Dev

ビューはAngular6で更新されていません

分類Dev

ネストされたJSON上のAngular6 ngForselectオブジェクト

分類Dev

Angular6モジュール-Angularは定義されていません

分類Dev

AngularはGMapオブジェクト内で更新されません

分類Dev

Angular6-サービスから返されたデータをサブスクライブできません

分類Dev

オブジェクトを反復処理して、テーブルAngular6に表示します

分類Dev

Angular6-リアクティブフォーム-オブジェクトと[選択済み]バインディングを使用する場合、プログラムで選択オプションを設定できません

分類Dev

Angular 6オブジェクトの配列を日付でソート

分類Dev

Angular 6:エラー:タイプ 'object'の異なるサポートオブジェクト '[objectObject]'が見つかりません。NgForは、配列などのIterablesへのバインドのみをサポートします

分類Dev

戻りURLパラメータオブジェクトANGULAR6

分類Dev

Angular6はオブジェクトを見つけて削除します

分類Dev

遅延ロードされたモジュールのコンポーネントに配置された場合、Angular6ディレクティブは初期化されません

Related 関連記事

  1. 1

    Angular 6:データはフロントエンドに表示されません

  2. 2

    Angular 6:異なるコンポーネントのJSONオブジェクトから個々のデータをフェッチできません

  3. 3

    Angular6-ngIfはオブジェクトを破壊しません

  4. 4

    Angular 6Jsonデータをオブジェクトに変換します

  5. 5

    Angular5はHTMLへのインターフェースオブジェクトを表示できません

  6. 6

    Angular 6のオブジェクトのローカル配列を反復処理できませんか?

  7. 7

    Angular6アップグレードの問題:プロパティ「データ」がタイプ「オブジェクト」に存在しません

  8. 8

    Firebase / Angular:メッセージはHTMLで表示されませんが、メッセージオブジェクトが含まれています

  9. 9

    Angular FIrebase5オブジェクトのキーが表示されていません。削除できません

  10. 10

    非同期パイプはAngular6で[オブジェクトオブジェクト]を取得します

  11. 11

    Angular 6のjsonオブジェクトからのヘッダーシーケンスに基づいてテーブル行データを表示するにはどうすればよいですか?

  12. 12

    Angular 6は、提供されたオブジェクトからドロップダウンリスト値を自動的に選択/バインドすることはできません

  13. 13

    Angular6の更新仕様[オブジェクトErrorEvent]がスローされました

  14. 14

    Angular 6エラー:タイプ 'string'の異なるサポートオブジェクトが見つかりません

  15. 15

    ANGULAR 6:エラーTS2315:タイプ「ModuleWithProviders」はジェネリックではありません

  16. 16

    Angular6の子モジュールのアプリモジュール内で宣言されたディレクティブを使用できません

  17. 17

    解析[オブジェクトオブジェクト] Angular 6

  18. 18

    ビューはAngular6で更新されていません

  19. 19

    ネストされたJSON上のAngular6 ngForselectオブジェクト

  20. 20

    Angular6モジュール-Angularは定義されていません

  21. 21

    AngularはGMapオブジェクト内で更新されません

  22. 22

    Angular6-サービスから返されたデータをサブスクライブできません

  23. 23

    オブジェクトを反復処理して、テーブルAngular6に表示します

  24. 24

    Angular6-リアクティブフォーム-オブジェクトと[選択済み]バインディングを使用する場合、プログラムで選択オプションを設定できません

  25. 25

    Angular 6オブジェクトの配列を日付でソート

  26. 26

    Angular 6:エラー:タイプ 'object'の異なるサポートオブジェクト '[objectObject]'が見つかりません。NgForは、配列などのIterablesへのバインドのみをサポートします

  27. 27

    戻りURLパラメータオブジェクトANGULAR6

  28. 28

    Angular6はオブジェクトを見つけて削除します

  29. 29

    遅延ロードされたモジュールのコンポーネントに配置された場合、Angular6ディレクティブは初期化されません

ホットタグ

アーカイブ