Angular 2配列はコンソールに印刷されますが、オブジェクトプロパティを画面に印刷できません

フローリンシミオン

作成したサービスには次のメソッドがあります。

  getPost(nid: string): Observable<Post[]>{
    let url = "http://test.co.uk/api/v1/basic/" + nid;
    return this.http.get(url,  {headers: this.headers}).map(res => res.json() as Post).catch(err => {

      return Observable.throw(err);
    });
  }

そして、これは私のコンポーネントのクラスです:

export class PostDetailComponent implements OnInit {
  posts: Post[] = [];
  post: Post = new Post();
  constructor(
private route: ActivatedRoute,
private postService: PostService
) { }
  ngOnInit() {

    this.route.params.switchMap((params: Params) => {
      let nid = params ['nid'];
      return this.postService.getPost(nid);  }).subscribe(res => {
      console.log(res)
      this.post = res as Post;
    }, err =>{
      console.log(err);
  });

  }

}

JSONフィードは次のようになります(はい、配列内の1つのオブジェクト):

  [  
   {  
      "nid":"3",
      "title":"When Unity meets Vuforia",
      "body":"<p>Unless you have been living under a rock in the past 7 - ...",
      "uid":"admin",
      "path":"\/node\/3",
      "field_article_image":"http:\/\/test.co.uk\/sites\/default\/files\/when-unity-meets-vuforia_0.jpg?itok=BGYaotay"
   }
]

したがって、私のテンプレートでは、印刷{{post}}すると画面に[オブジェクトオブジェクト]が表示されます。

印刷する{{post | json}}と、行JSONフィードが表示されます。

そして最後に、私が印刷し{{post.title}}たり{{post?.title}}、何も得られなかったりした場合

次のようなクラスの投稿もあります。

export class Post{
  constructor(

public nid?: string,
public title?: string,
public body?: string
public image?: string
  ){
  }
}

ヒントはありますか?

フアンメンデス

単一のオブジェクトであるはずの配列に配列を割り当てています。配列の最初の要素をpost変数にコピーします

this.post = res[0] as Post

補足:生のオブジェクトをクラスインスタンスに割り当てるのは正しくありません。この場合、あなたthis.post.constructorは存在しませんしthis.post instanceof Post == false

可能ですObject.assign(this.post, res[0])が、すべてのプロパティが常に存在するわけではない場合は、既存のプロパティをクリアする必要があります。

代わりにオブジェクトの形状をインターフェイスとして定義することを好みます。実行時にすべてのインターフェイス情報が削除されるため、問題は発生しませんが、クラスはコンパイル時に静的な型チェックを行うだけでなく、コードを出力します。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

分類Dev

Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

分類Dev

Angularはオブジェクトにアクセスできますが、プロパティを読み取ることはできません

分類Dev

Angular 7:データはページに表示されますが、コンソールにプロパティを読み取れません

分類Dev

オブジェクトの配列をローカルストレージに保存できません(Angular 9)

分類Dev

プロパティ「トークン」はタイプ「オブジェクト」に存在しません-Angular8

分類Dev

Angular.ioTypeScriptコンポーネントのプロパティオブジェクトにアクセスできません

分類Dev

JSONオブジェクトをきれいに印刷されたJSONに変換するAngular 2パイプ

分類Dev

Angular JS - オブジェクトをスコープ配列にプッシュできません

分類Dev

配列のオブジェクトをAngularを介してテーブル形式で印刷するにはどうすればよいですか?

分類Dev

Angular:ng-repeatが正しく機能していませんが、オブジェクトはコンソールに表示されます

分類Dev

「「formControlAnimalSelect」のプロパティ「validator」に割り当てることができません:オブジェクトではありません」Angular Typescript

分類Dev

Angular Formsは、オブジェクトの各プロパティのコントロールを作成します

分類Dev

Angularサービスでオブジェクトのプロパティに値を割り当てることができません

分類Dev

$ watchは、Angularの新しいアイテムのオブジェクトの配列でプロパティの変更を見つけられません

分類Dev

Angular js 1.4.7では、オブジェクトのプロパティ/フィールド名を文字列で始める必要があるかどうか(数値は許可されていません)?

分類Dev

テンプレートにオブジェクトを入力すると、Angular10で「プロパティは初期化前に使用されます」というエラーが発生します

分類Dev

Angular2:プロパティ 'controls'がタイプ 'AbstractControl'に存在しません。インデックスを介してformarray内のオブジェクトの.controlにアクセスするときのエラー

分類Dev

プロパティを追加できません_ $ visited、オブジェクトはprimeNG、angular 2、@ ngrxを使用して拡張できません

分類Dev

フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

分類Dev

フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

分類Dev

Angular-2ウェイデータバインディングrxjsサブジェクトプロパティ、子では発行されませんが、親では発行されます

分類Dev

Angularコンパイルエラー:NG6001:クラスはNgModule'AppModule 'の宣言にリストされていますが、ディレクティブ、コンポーネント、またはパイプではありません

分類Dev

私はAngularプロジェクトに取り組んでいます。router.navigateを使用して、あるコンポーネントから別のコンポーネントに配列を渡す必要がありますが、それができません

分類Dev

Angular2 / Typescript / ngRx-TypeError:オブジェクトの読み取り専用プロパティに割り当てることができません

分類Dev

Angular2では* ngForループはオブジェクトの配列からキャンバス要素を作成できません

分類Dev

Angular @Input、オブジェクトを同じオブジェクトにバインドしますが、プロパティ名は異なります

分類Dev

Angular JS 2 HTTP Post:オブジェクトはプロパティまたはメソッド 'toPromise'をサポートしていません

分類Dev

Angular-ディレクティブのコンパイル後にコントローラーメソッドにアクセスできません

Related 関連記事

  1. 1

    Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

  2. 2

    Angular:子コンポーネントで渡されたオブジェクトのプロパティを更新すると、親コンポーネントが更新されますが、その値は更新されません。なぜですか?

  3. 3

    Angularはオブジェクトにアクセスできますが、プロパティを読み取ることはできません

  4. 4

    Angular 7:データはページに表示されますが、コンソールにプロパティを読み取れません

  5. 5

    オブジェクトの配列をローカルストレージに保存できません(Angular 9)

  6. 6

    プロパティ「トークン」はタイプ「オブジェクト」に存在しません-Angular8

  7. 7

    Angular.ioTypeScriptコンポーネントのプロパティオブジェクトにアクセスできません

  8. 8

    JSONオブジェクトをきれいに印刷されたJSONに変換するAngular 2パイプ

  9. 9

    Angular JS - オブジェクトをスコープ配列にプッシュできません

  10. 10

    配列のオブジェクトをAngularを介してテーブル形式で印刷するにはどうすればよいですか?

  11. 11

    Angular:ng-repeatが正しく機能していませんが、オブジェクトはコンソールに表示されます

  12. 12

    「「formControlAnimalSelect」のプロパティ「validator」に割り当てることができません:オブジェクトではありません」Angular Typescript

  13. 13

    Angular Formsは、オブジェクトの各プロパティのコントロールを作成します

  14. 14

    Angularサービスでオブジェクトのプロパティに値を割り当てることができません

  15. 15

    $ watchは、Angularの新しいアイテムのオブジェクトの配列でプロパティの変更を見つけられません

  16. 16

    Angular js 1.4.7では、オブジェクトのプロパティ/フィールド名を文字列で始める必要があるかどうか(数値は許可されていません)?

  17. 17

    テンプレートにオブジェクトを入力すると、Angular10で「プロパティは初期化前に使用されます」というエラーが発生します

  18. 18

    Angular2:プロパティ 'controls'がタイプ 'AbstractControl'に存在しません。インデックスを介してformarray内のオブジェクトの.controlにアクセスするときのエラー

  19. 19

    プロパティを追加できません_ $ visited、オブジェクトはprimeNG、angular 2、@ ngrxを使用して拡張できません

  20. 20

    フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

  21. 21

    フィルタリングされた配列(オブジェクト)を印刷するionic4 / angular

  22. 22

    Angular-2ウェイデータバインディングrxjsサブジェクトプロパティ、子では発行されませんが、親では発行されます

  23. 23

    Angularコンパイルエラー:NG6001:クラスはNgModule'AppModule 'の宣言にリストされていますが、ディレクティブ、コンポーネント、またはパイプではありません

  24. 24

    私はAngularプロジェクトに取り組んでいます。router.navigateを使用して、あるコンポーネントから別のコンポーネントに配列を渡す必要がありますが、それができません

  25. 25

    Angular2 / Typescript / ngRx-TypeError:オブジェクトの読み取り専用プロパティに割り当てることができません

  26. 26

    Angular2では* ngForループはオブジェクトの配列からキャンバス要素を作成できません

  27. 27

    Angular @Input、オブジェクトを同じオブジェクトにバインドしますが、プロパティ名は異なります

  28. 28

    Angular JS 2 HTTP Post:オブジェクトはプロパティまたはメソッド 'toPromise'をサポートしていません

  29. 29

    Angular-ディレクティブのコンパイル後にコントローラーメソッドにアクセスできません

ホットタグ

アーカイブ