ng if with angular for string contains

前端 未结 5 967
盖世英雄少女心
盖世英雄少女心 2020-12-30 19:55

I have the following Angular code:

  • {{new.label}}
  • 相关标签:
    5条回答
    • 2020-12-30 19:59

      All javascript methods are applicable with angularjs because angularjs itself is a javascript framework so you can use indexOf() inside angular directives

      <li ng-repeat="select in Items">   
               <foo ng-repeat="newin select.values">
      <span ng-if="newin.label.indexOf(x) !== -1">{{newin.label}}</span></foo>
      </li>
      //where x is your character to be found
      
      0 讨论(0)
    • 2020-12-30 20:02

      Only the shortcut syntax worked for me *ngIf.

      (I think it's the later versions that use this syntax if I'm not mistaken)

      <div *ngIf="haystack.indexOf('needle') > -1">
      </div>
      

      or

      <div *ngIf="haystack.includes('needle')">
      </div>
      
      0 讨论(0)
    • 2020-12-30 20:12

      ES2015 UPDATE

      ES2015 have String#includes method that checks whether a string contains another. This can be used if the target environment supports it. The method returns true if the needle is found in haystack else returns false.

      ng-if="haystack.includes(needle)"
      

      Here, needle is the string that is to be searched in haystack.

      See Browser Compatibility table from MDN. Note that this is not supported by IE and Opera. In this case polyfill can be used.


      You can use String#indexOf to get the index of the needle in haystack.

      1. If the needle is not present in the haystack -1 is returned.
      2. If needle is present at the beginning of the haystack 0 is returned.
      3. Else the index at which needle is, is returned.

      The index can be compared with -1 to check whether needle is found in haystack.

      ng-if="haystack.indexOf(needle) > -1" 
      

      For Angular(2+)

      *ngIf="haystack.includes(needle)"
      
      0 讨论(0)
    • 2020-12-30 20:16

      Do checks like that in a controller function. Your HTML should be easy-to-read markup without logic.

      Controller:

      angular.module("myApp")
      .controller("myController",function(){
          var self = this;
      
          self.select = { /* ... */ };
      
          self.showFoo = function() {
              //Checks if self.select.name contains the character '?'
              return self.select.name.indexOf('?') != -1;
          }
      });
      

      Page example:

      <div ng-app="myApp" ng-controller="myController as vm">
          <p ng-show="vm.showFoo()">Bar</p>
      </div>
      
      0 讨论(0)
    • 2020-12-30 20:17
      ng-if="select.name.indexOf('?') !== -1" 
      
      0 讨论(0)
    提交回复
    热议问题