Search code examples
javascriptangularjsangular-ng-if

angularjs - ng-if Multiple Conditions


So this has been asked before but my question isnt as simple as ng-if="country == 'ireland' || country='United Kingdom'"

I need to do something like:

ng-if="(country='ireland' || country='united kingdom') || (name='John' || name='Joe')"

What im doing is this:
ng-if=" (settings.eur && title.usa != undefined || title.leak != undefined) || (settings.usa && title.eur != undefined || title.leak != undefined) || (settings.leak && title.eur != undefined || title.usa != undefined) || (settings.leak == false && settings.eur == false && settings.usa == false)"

But it's only triggering the first line or at least that is what it seems to be doing.


Solution

  • I found what I was doing incorrectly.
    With if tags, your expression can use Ternary Operators and () Unsure what its called.

    For example:
    country == Ireland && (firstname == John || lastname == Doe) && console == PC

    Which means:
    If the country is Ireland AND firstname is john OR lastname is Doe AND console is PC then return true.

    And where it was going wrong is the (). You need to put == true after the closing bracket for it to actually work.
    This allowed me to do many expressions/conditions in one ng-if.

    Final Code (This is an example of what I was doing with it):

    ng-if="
    settings.eur == true && settings.usa == false && settings.leak == false && (title.usa != undefined || title.rf != undefined || title.leak != undefined) == true ||
    settings.usa == true && settings.eur == false && settings.leak == false && (title.eur != undefined || title.rf != undefined || title.leak != undefined) == true ||
    settings.leak == true && settings.eur == false && settings.usa == false && (title.eur != undefined || title.usa != undefined || title.rf != undefined) == true ||
    
    settings.eur == true && settings.usa == true && settings.leak == true && (title.usa != undefined && title.eur != undefined || title.rf != undefined) == true ||
    settings.eur == true && settings.usa == true && settings.leak == false && (title.usa != undefined && title.eur != undefined || title.leak != undefined || title.rf != undefined) == true ||
    settings.eur == true && settings.usa == false && settings.leak == true && (title.usa != undefined || title.rf != undefined) == true ||
    settings.eur == false && settings.usa == true && settings.leak == true && (title.eur != undefined || title.rf != undefined) == true ||
    
    settings.leak == false && settings.eur == false && settings.usa == false
    "