Angular2 * ngIf多重条件

时间:2016-11-15 05:09:33

标签: angular angular2-routing

我正在开发angular2示例应用程序。

我添加了1个menuViews对象,里面有名称,图标和网址成员。

在页面中,我正在迭代那个工作正常的menuViews。

我有一些方案,有些网址会像../app/histoy那样是内部网址 但在某些情况下,它是“https://play.google.com/

以下是我的HTML代码:

<li *ngFor="let item of menuViews">
    <a class="ripple-effect" [routerLink]="[item.url]" *ngIf="isUserLoggedIn == true" >             
        <span class="media-body media-middle" *ngIf="isUserLoggedIn == true">{{item.name}}</span>
    </a>            
</li>

所以在<a>标签中,我想把条件设置为:

if (item.url.indexOf("http://") == -1 && item.url.indexOf("https://") == -1) {
    //set value in [routerLink]
} else {
    //set value in href
}

我想要这样的条件。主要是我想分化内部和外部链接。

主要问题是,当它是外部链接时,它会尝试在base url + external linklocalhost:4200#home/https://play.google.com)重定向,这是错误的,所以我想根据某些条件管理它们。

其他建议也欢迎..

3 个答案:

答案 0 :(得分:2)

您可以执行以下操作:

<li *ngFor="let item of menuViews">
        // This will used for internal links which does not have http
    <template [ngIf]="item.url.indexOf('http') == -1">
        <a class="ripple-effect" [routerLink]="[item.url]" *ngIf="isUserLoggedIn == true" >             
        <span class="media-body media-middle" *ngIf="isUserLoggedIn == true">{{item.name}}</span>
        </a>            
    </template>
    // This will used for external links which have http or https and url value is set in href so hover problem also be resolved
    <template [ngIf]="item.url.indexOf('http') != -1">
        <a class="ripple-effect" href="{{item.url}}" *ngIf="isUserLoggedIn == true" >             
        <span class="media-body media-middle" *ngIf="isUserLoggedIn == true">{{item.name}}</span>
        </a>            
    </template>
</li>

根据您的要求,让我知道这是否有效。

祝你好运

答案 1 :(得分:2)

你可以简单地使用如下

    <pre><code>`df1
     [,1] [,2]
[1,]    1  101
[2,]    2  202
[3,]    3  303`

    <pre><code>`df2
     [,1]
[1,]  101
[2,]  202
[3,]  303
[4,]  404`

答案 2 :(得分:0)

就我的问题而言,我建议执行此事

HTML中的

<li *ngFor="let item of menuViews">

     //just remove your href from <a> tag and use (click) event

     <a class="ripple-effect" (click)="onClick($event)" 
        *ngIf="isUserLoggedIn == true" >             
        <span class="media-body media-middle" 
           *ngIf="isUserLoggedIn == true">{{item.name}}
        </span>
     </a>            
</li>

在TS文件中

onClick(event){
    //Your other code lies here
     if (item.url.indexOf("http://") == -1 && item.url.indexOf("https://") == -1) {
          //set value in [routerLink]
      } else {
          //set value in href
      }
    //Your other code lies here
}