Фильтр angular json данных - PullRequest
0 голосов
/ 09 марта 2020

Я новичок в angular, но я пытался filter некоторые данные в angular. Я хочу, чтобы он // отображал данные со значением языка как 'eng', но мои решения выдавали мне ошибку, как показано ниже

// ОШИБКА в src / app / admin / kiosk / questions / questions .component.ts (88,24): ошибка TS2339: свойство 'language' // не существует для типа 'any []'.

Ниже приведен мой код

 private GetQuestions() {

       this.sub = this.kioskService.GetQuestions()
      .subscribe(res => {

        this.questions.language ==='eng';

        this.loading = false;

      });
  }

// это вид

 <div  class="row" *ngFor="let question of questions  ;
                               let i = index
                               let even = even; 
                               let odd  = odd "
                              [ngClass]="{ odd: odd, even: even }"
                              >

        <p style="color: black; font-size: 15px;" class="id"><b>.</b></p>
        <p ng-hide="question.language === 'eng'" class="question">{{ question.question }}</p>
        <p class="disease">{{ question.disease }}</p>
        <p class="language" *ngIf="question.language === 'eng'">English</p>
        <p class="language" *ngIf="question.language === 'swa'">Kiswahili</p>
        <p class="position">{{ question.position }}</p>
        <p class="status">ACTIVE</p>
        <p class="date">{{ question.createdOn | date:'shortDate' }}</p>





   </div>

// пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Установить ниже пакетов

npm install --save lodash
npm install --save-dev @types/lodash

Импорт библиотеки loda sh в этом компоненте

import * as _ from 'lodash';

Declate, верифицируется как

questions: any[] = [];


private GetQuestions() {

       this.sub = this.kioskService.GetQuestions()
      .subscribe(res => {

        this.questions = res;

        _.each(this.questions,q=>{
             q.language = "eng"
        }) 

        this.loading = false;

      });
  }
0 голосов
/ 09 марта 2020

Я думаю, что вот в чем проблема:

private GetQuestions() {

   this.sub = this.kioskService.GetQuestions()
  .subscribe(res => {

    this.questions.language ==='eng';

    this.loading = false;

  });
}

Если вопросы - это массив объектов, вы не можете напрямую присвоить массиву свойство language:

//ERROR
this.questions.language ==='eng';

в соответствии с данными, которые вы получаете в своем методе GetQuestions:

private GetQuestions() {

   this.sub = this.kioskService.GetQuestions()
  .subscribe(res => {

    this.questions.language ==='eng';

    this.loading = false;

  });
}

Я думаю, что this.kioskService.GetQuestions () возвращает наблюдаемое, и вы подписываетесь на него, хорошо, это нормально, но позже ¿Что вы делаете с наблюдаемыми данными ?, вы должны получить массив объектов с помощью метода this.kioskService.GetQuestions (), а внутри него вместо этого:

this.questions.language ==='eng';

вам следует сделать это:

private GetQuestions() {

   this.kioskService.GetQuestions()
  .subscribe(res => {

       this.questions = res;
       this.loading = false;

   });

}

Помните, что ваш ответ в наблюдаемой должен содержать массив объектов, и каждый объект внутри этого массива может иметь свойство 'language'.

О, еще одна странная вещь, которую я понял, это то, что вы ничего не присваиваете переменной, вы строго сравниваете свой массив и строку:

//This is not an assignement, this returns an error because this property doesn't exists in an array
this.questions.language ==='eng';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...