我正在尝试更改ngFor中的类whit ngclass和三元运算符,如果布尔值为真,我想使用alaling-成功,如果布尔值为假,我想使用alaling-危险。当我插入第一个元素true是可以的,但当我插入第二个元素false时,第一个元素更改为false
TS
tesseraValidita: boolean;
checkCardValitidy(tesserato: any){
this._dipendentiMandatariService.getTessere(tesserato.idCRM).subscribe((tessera: Tessera[]) => {
let valid = false;
let itemValido: Tessera;
valid = tessera.some((item: Tessera) => {
itemValido = item;
return (item.Stato === 'In Essere' && item.Tipo === 'Autorale' && this.moment(item.DataFineValidita).format('YYYY-MM-DD') > this.moment(new Date()).format('YYYY-MM-DD'));
});
if (valid) {
// this.alertService.info('Verificatore ' + tesserato.denominazione + ' Tessera Valida');
// this.verificaTessera = tesserato.idCRM + 'Tessera Valida Nr: ' + itemValido.Numero + " scadenza il " + this.moment(itemValido.DataFineValidita).format('DD/MM/YYYY');
this.tessereVerificateArray.push('Tessera Valida Nr: ' + itemValido.Numero + " scadenza il " + this.moment(itemValido.DataFineValidita).format('DD/MM/YYYY'))
this.tesseraValidita = true;
//this.className = 'alert-success'
} else {
// this.alertService.error('Attenzione! Accertatore ' + tesserato.denominazione + ' senza tessera in corso di validità');
//this.verificaTessera = tesserato.idCRM + 'Attenzione! Accertatore senza tessera in corso di validità' ;
this.tessereVerificateArray.push('Attenzione! Accertatore senza tessera in corso di validità');
this.tesseraValidita = false;
//this.className = 'alert-danger'
}
});
<div class="pull-right col-md" style="position: absolute; right: 96px; top: 431px;">
<div
*ngFor="let tesseraVerificata of tessereVerificateArray;
let i = index"
class="alert"
[ngClass]="tesseraValidita ? 'alert-success index' +i: 'alert-danger index' +i">
{{tesseraVerificata}}
</div>
</div>
你最好操作一些更复杂的结构,而不仅仅是字符串
tessereVerificateArray.push({tesseraValidita: true, message: 'Tessera Valida Nr:....'})
然后,您可以使用您创建的整个对象来绘制一个项目
<div *ngFor="let tesseraVerificata of tessereVerificateArray; let i = index"
[ngClass]="tesseraVerificata.tesseraValidita ? 'alert-success index' +i: 'alert-danger index' +i"
...
> {{tesseraVerificata.message}}</...>
在您的ts
中,您需要在每个对象中添加tes seraValidita
,如下所示。
if (valid) {
this.tessereVerificateArray.push({
text: 'Tessera Valida Nr: ' + itemValido.Numero + " scadenza il " + this.moment(itemValido.DataFineValidita).format('DD/MM/YYYY'),
tesseraValidita: true
});
} else {
this.tessereVerificateArray.push({
"text": "Attenzione! Accertatore senza tessera in corso di validità",
"tesseraValidita": false
});
}
然后在 HTML 中它应该是这样的。
<div class="pull-right col-md" style="position: absolute; right: 96px; top: 431px;">
<div
*ngFor="let tesseraVerificata of tessereVerificateArray;
let i = index"
class="alert"
[ngClass]="tesseraVerificata.tesseraValidita ? 'alert-success index' : 'alert-danger index'">
{{tesseraVerificata.text}}
</div>
</div>
这是因为“tesseraValidita”是一个全局变量,当您插入第二个值时,“tessera Validit”会在全局级别上发生变化,这就是为什么在这两种情况下警报都会发生变化的原因。必须隔离此变量并将其放入对象数组中
if (valid) {
this.tessereArray.push({ message: '**example**', valid": true});
} else {
this.tessereArray.push({"message": "**example**", "valid": false });
}
<div *ngFor="let tessera of tessereArray; let i = index"
[ngClass]="tessera.valid? 'alert-success index' +i:
'alert-danger index' +i"
...> {{tessera.message}}</...>
首先,ngfor中的标签没有要关联的标识,也没有要查找的任何其他标识。然而,我没有发现任何需要id的东西,在剑道页面上有许多例子显示了没有id的复选框的例子,所以我不认为这是问题(但肯定可能是错误的)。 其次,它们在ngFor循环中。我不知道为什么这会把它搞砸,但这是我能想到的一切。我搜索了一下,但找不到任何关于这里的问题或如何解决它的东西。 你知道我哪里出了问题或者我没有看到什么吗?我确实记录了
我是angular的新手,我有一个愚蠢的问题,我如何显示*ngfor循环之外的实际项目数? 我使用这样的过滤和分页管道 我知道有一个变量“count”,但当然它只在那个循环中可用,我如何在组件中获得这个变量,我需要创建新的组件,把它放在那个循环中,通过指令传递“count”还是有更简单、更干净的方法?
使用其他文本消息不是一个好方法,因为如果枚举中有数百个值,那该怎么办。我不会在html代码中重复枚举。
问题内容: 我想在ng-repeat属性中调用函数,这是我的代码 示例plnkr html js 当我打开控制台时,我注意到了错误 我的代码的主要目标是在ng-repeat中使用函数来计算每个事件循环中的数据 问题答案: 找到了解决方案:
我是从JSON文件而不是数据库获取数据。我试图根据JSON中的状态值为图标赋色,例如[if green?class1:class2]下面是我的代码。 我的HTML文件 下面是我的JSON文件。 这是我的CSS **我无法更改状态图标的颜色。我得到了这个错误** 错误类型错误:无法读取未定义的属性“status”
我有一个json,包含如下对象数组 在我看来,我想用ngFor呈现json,就像这样 你的名字叫什么? abc 定义 Ghi jkl