ngЕсли ошибка моей функции - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь отобразить данные из базы данных. Затем я хочу проверить для каждой информации, существует ли она в другой таблице, поэтому мне нужно отправить запрос в мой бэк-офис, чтобы проверить эти данные. Затем мне нужно показать, действительно ли это или нет.

Проблема в том, что *ngIf не работает, и это показывает мне, что функция моего провайдера не работает.

Это HTML-страница:

<ion-row *ngFor="let obj of listObj">
    <ion-col col-8>
        <ion-icon name="md-checkmark-circle-outline"></ion-icon>
        <p>Objectif : {{obj.id_obj}} </p>
        <p id="nameobj"> {{obj.des_obj | titlecase}}</p>
    </ion-col>
    <ion-col col-4 *ngIf="testobj(obj.id_obj_ser).length">
        <p>lol</p>
        <!--
        <p id="valide">Vue</p>
        <p id="non-valide">Non Vue</p>-->
    </ion-col>
</ion-row>

Это мой контроллер:

export class ObjectifEnsPage {
    listObj = <[any]>[];
    testiObj = <[any]>[];
    id_stage: number;
    cin: number;
    test: boolean;

    constructor(public navCtrl: NavController, public navParams: NavParams, private etudiant: EtudiantProvider) {
        this.id_stage = this.navParams.get('stage');
        this.cin = this.navParams.get('cin');
        console.log("el stage w el cin ahawma" + this.id_stage, this.cin);
    }

    ionViewDidLoad() {
        console.log('ionViewDidLoad ObjectifEnsPage');
        this.getobjectif()
    }

    getobjectif() {
        this.etudiant.getobjectif(this.id_stage).subscribe((data: any) => {
            this.listObj = data;
            console.log(data);
        }, error => {
            console.log(error);
        });
    }

    testobj(id: number): any {
         this.etudiant.getobjectifvalidation(id, this.cin).subscribe((data: any) => {
             this.testiObj = data;
         }, error => {
             console.log(error);
         });
    }
}

1 Ответ

0 голосов
/ 30 апреля 2018

Вы должны вернуть boolean, если вы используете *ngIf Ваша функция должна либо возвращать логическое значение, либо Observable, который разрешается в логическое значение

private testiObj$: Observable<any>;

testobj(id: number): any {
     this.testiObj$ = this.etudiant.getobjectifvalidation(id, this.cin);

и теперь вы можете подписаться на это в своем шаблоне с async pipe

<ion-col col-4 *ngIf="testobj(obj.id_obj_ser) | async">

Пока что Observable возвращает логическое значение. Дальнейшее чтение:

https://toddmotto.com/angular-ngif-async-pipe

...