Angular2 Как использовать ngIf, чтобы показать какой-то другой текст, если в json Object есть пустое значение?

Привет у меня проблемы с пониманием ngIf.

В настоящее время у меня есть объект JSON

Profile:{
0:{name: 'Jen',
intro:'',
gender:'female',
age:'1992'},
1:{name: 'John',
intro:'Hi',
gender:'male',
age:'1988'}
}

Вступление первого объекта - пустая строка, и когда в нем есть пустая строка, я хочу отобразить "Пользователь еще не написал".

Я попытался использовать ngIf, как это, но, конечно, это не работает. Что я должен делать?

<div *ngFor="let p of Profile">
                <p class="fontstyle2">
                    {{p.intro}}
                </p>

                <p class="fontstyle2" *ngIf="p.intro=''">
                    The user hasn't written it yet
                </p>
            </div>

4 ответа

Это должно быть == не =

 <p class="fontstyle2" *ngIf="p.intro==''">
   The user hasn't written it yet
 </p>

ngIf использует синтаксис JavaScript для сравнения, так что вы можете использовать p.intro === '' или просто !p.intro так как пустая строка ложная.

Другое дело, что вы, вероятно, захотите отобразить только одну из альтернатив, поэтому вам следует использовать ngIf в обоих:

<div *ngFor="let p of Profile">
    <p class="fontstyle2" *ngIf="p.intro">
                {{p.intro}}
    </p>

    <p class="fontstyle2" *ngIf="!p.intro">
        The user hasn't written it yet
    </p>
</div>

Другой вариант - сделать это следующим образом:

<div *ngFor="let p of Profile">
    <p class="fontstyle2">
         {{p.intro? p.intro : "The user hasn't written it yet"}}
    </p>

Вы хотите отобразить Пользователь еще не написал это, когда вступление пусто, и если оно не пусто, то вы хотите отобразить значение вступления

Для этого вы можете использовать следующий фрагмент кода:

        <div *ngFor="let p of Profile">
            <p class="fontstyle2" *ngIf="p.intro!=''">
                {{p.intro}}
            </p>

            <p class="fontstyle2" *ngIf="p.intro===''">
                The user hasn't written it yet
            </p>
        </div>

Как многие из здесь сказали, что вы должны использовать === вместо просто = покончено с условием.

<div *ngFor="let p of Profile">
    <p class="fontstyle2">
        {{p.intro}}
    </p>
    <p class="fontstyle2" *ngIf="p.intro===''">
        The user hasn't written it yet
    </p>
</div>

или вы можете просто проверить !

<div *ngFor="let p of Profile">
    <p class="fontstyle2">
        {{p.intro}}
    </p>
    <p class="fontstyle2" *ngIf="!p.intro">
        The user hasn't written it yet
    </p>
</div>
Другие вопросы по тегам