【发布时间】:2017-04-28 00:06:50
【问题描述】:
我正在编写一个应用程序,我需要从方法内部传递一个 ngIf 表达式。表达式来自后端服务作为字符串。在 Angular 1 中,我曾经在传递给 ng-if 之前使用插值来评估字符串,然后将其评估为真或假,请看下面的 plunker
更新
Plunker Angular 1.5 https://plnkr.co/edit/ukGlJvBZyqGvvrmjEZJY?p=preview
但是在 Angular 2 中,我不能使用带有 *ngIf 的插值,抛出异常。看看下面的代码。我期望没有一行(Howdy1、Howdy2、Howdy3)出现在 UI 上,因为它传递了相同的表达式。但是只有第一个被隐藏而不是剩下的两个,其中表达式作为字符串变量传递。
我有 Angular 2 和 1.5 的 plunker 代码。如果有人解决了类似的问题,请帮助我。
import {Component, NgModule} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
@Component({
selector: 'my-app',
template: `
<h1>Angular 2 Systemjs start</h1>
<div *ngIf="map['a']=='b' || map['b']=='a'">Howdy1</div>
<div *ngIf="logicAsString">Howdy2</div>
<div *ngIf="showDiv(logicAsString)">Howdy3</div>
<p>{{logicAsString}}</p>
`
})
export class AppComponent {
logicAsString:string ="map['a']=='b' || map['b']=='a'";
map = {
a:'a',
b:'b'
}
public showDiv(logic){
return logic;
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ AppComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule {}
Plunker Angular 2- https://plnkr.co/edit/YExzpE?p=preview
【问题讨论】:
标签: angular