* NgIf的替代或更好的方法

时间:2017-04-20 06:09:50

标签: javascript angular typescript

您好我的模板中有几个*NgIf条件。基于NgIf我在模板中显示/渲染我的组件(不同类型的表单)。我的一个函数中的示例(下面)

private _onClick(cell:any){
        this._enableView = false;
        this._enableCreate = true;
        this._enableDelete = false;
        this._enableEdit = false;
    }

这是在模板中启用我的创建表单并隐藏其他表单。但这样做对我来说有点不对劲或多余。有没有更好的方法或建议而不是这种方法?

2 个答案:

答案 0 :(得分:4)

如果Leguest建议可以使用单一状态,我建议ngswitch使用如下:

// Syntax for ngSwitch
<div [ngSwitch]="state">
    <div *ngSwitchCase="'create'"> ... </div>
    <div *ngSwitchCase="'view'">  ... </div>
    <div *ngSwitchCase="'edit'"> ... </div>
    <div *ngSwitchCase="'delete'"> ... </div>
    <div *ngSwitchDefault> ... </div>
</div>

否则,如果您使用的是Angular 4.x,则可以利用ngIf else

// Syntax for ngIf/Else
<div *ngIf=”condition; else elseBlock”>Truthy condition</div>
<template #elseBlock>Falsy condition</template>

答案 1 :(得分:2)

我不确定它是好还是坏,但你可以有一个国家财产,例如 this.state ,包含字符串:

JS

2017-04-20T06:10:59.027+0000 [initandlisten] ERROR: Insufficient free space for journal files
2017-04-20T06:10:59.027+0000 [initandlisten] Please make at least 3379MB available in /data/db/journal or use --smallfiles

HTML

 private _onClick(cell:any){
    this.state = 'create'
 }

所以你将部分代码替换为模板,我希望它能减少你的js代码库