0

特定の順序になっている「キー」の配列からの情報を使用して、JSONP 呼び出しを行います。結果の新しい配列を、キーのソース配列と同じ順序にする必要があります。これは時々発生しますが、常にではありません。

forEach、for ループ、キー値だけの単純な配列、およびフィールド「name」の後にキー値が続く配列を試しました。一貫した注文を取得できない理由がわかりません。以下は、単純な配列とキー値のみです。

 /*separate defining class*/
 export class ArrayObjectItem {
  city: string;

constructor(city: string) {

this.city = city;
 }

  }
  /**/

  /*Below follows the code inside the main bootstrapped/rendering component*/

 names: [] = ['name1', 'name2', 'name3', 'name4', 'name5'];
 arraytorender: Array<ArrayObjectItem>[] = [];

this.names.forEach(name => {
  this.aJSONPservice.getData(name).subscribe(response => {
    const objectinarray = new ArrayObjectItem("null");
    objectinarray.city = response.city;
 this.arraytorender.push(objectinarray);

 });
 });

メインコンポーネントのビュー:

<div *ngFor="#item of arraytorender">
 {{item.city}}
</div>
4

2 に答える 2

1

*ngFor正しいことをします。配列はソートされていません。
並べ替えると、目的の結果が得られます。

  ngOnInit():any {
    this.names.forEach(name => {
      this._cityService.getCity().subscribe(response => {
        const objectinarray = new ArrayObjectItem("null", "null");
        objectinarray.city = response.city;
        objectinarray.namefromkeys = name;
        this.arraytorender.push(objectinarray);
        this.arraytorender.sort((a,b) => {
          if(a.namefromkeys == b.namefromkeys) {
            return 0;
          }
          if(a.namefromkeys > b.namefromkeys) {
            return 1;
          }
          return -1;
        });
      });
    })
  }
于 2016-04-14T15:16:33.867 に答える