无法读取BrowserDomAdapter.removeClass中未定义的属性“删除” ...
<ol class="breadcrumb">
<li *ngClass="{active: step==='step1'}" (click)="step='step1; '">Step1</li>
<li *ngClass="{active: step==='step2'}" (click)="step='step2'">Step2</li>
<li *ngClass="{active: step==='step3'}" (click)="step='step3'">Step3</li>
</ol>
#1 楼
Angular 2+提供了几种有条件地添加类的方法:类型一
[class.my-class]="step === 'step1'"
类型二
[ngClass]="{'my-class': step === 'step1'}"
和多个选项:
[ngClass]="{'my-class': step === 'step1', 'my-class2':step === 'step2' }"
类型3
[ngClass]="{1:'my-class1',2:'my-class2',3:'my-class4'}[step]"
类型4
[ngClass]="(step=='step1')?'my-class1':'my-class2'"
评论
完美的答案,只需将类型2修改为:[ngClass] =“ {'my-class':step =='step1'}”使用''int类名
– Adriano Galesso阿尔维斯
17-3-28在6:38
我一直在寻找类型4,但我想知道是否可以在该表达式中添加另一个带有其他条件的类?提前致谢
–路易·滨田(Louay Hamada)
18年5月15日在17:48
对于类型三,类名和检查的顺序错误。它应该首先是类名称,例如[ngClass] =“ {'my-class1':1,'my-class2':2}”
–obaylis
18年7月18日在11:33
我想不止一次投票,每次我在这里结束时都提醒我如何做。 :)
– danbord
2月26日下午14:51
我有同样的问题@danbord :)
– MostafaMashayekhi
2月26日15:05
#2 楼
[ngClass]=...
代替*ngClass
。*
仅用于结构指令的简写语法,例如,您可以使用 <div *ngFor="let item of items">{{item}}</div>
,而不是更长的等效版本
<template ngFor let-item [ngForOf]="items">
<div>{{item}}</div>
</template>
另请参见https://angular.io/docs/ts/latest/api/common/index/NgClass-directive.html
<some-element [ngClass]="'first second'">...</some-element>
<some-element [ngClass]="['first', 'second']">...</some-element>
<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element>
<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>
<some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element>
另请参阅https://angular.io/docs/ts/latest/guide/template-syntax.html
<!-- toggle the "special" class on/off with a property -->
<div [class.special]="isSpecial">The class binding is special</div>
<!-- binding to `class.special` trumps the class attribute -->
<div class="special"
[class.special]="!isSpecial">This one is not so special</div>
< pre class =“ lang-ts prettyprint-override”>
<!-- reset/override all class names with a binding -->
<div class="bad curly special"
[class]="badCurly">Bad curly</div>
评论
从角度文档中:“星号是“语法糖”,用于表示更复杂的内容。在内部,Angular会将* ngIf属性转换为
的其余部分(包括其class属性)都移到了元素内部。” -更多信息@ angular.io/guide/structural-directives#the-asterisk--prefix
–组合
19年5月23日在8:56
实际上,这并不复杂,*仅允许简化的synax而不是规范的形式。
–GünterZöchbauer
19年6月28日在17:47
–组合
19年5月23日在8:56
实际上,这并不复杂,*仅允许简化的synax而不是规范的形式。
–GünterZöchbauer
19年6月28日在17:47
#3 楼
另一种解决方案是使用[class.active]
。示例:
<ol class="breadcrumb">
<li [class.active]="step=='step1'" (click)="step='step1'">Step1</li>
</ol>
评论
我认为这应该是可以接受的答案,因为这是Angular2设置html类的方式(我不知道,而google将我带到这里)。
–kub1x
16年11月21日在14:07
#4 楼
这是ngClass
的正常结构是:[ngClass]="{'classname' : condition}"
因此,在您的情况下,只需像这样使用它即可。 >
#5 楼
通过以下示例,您可以使用'IF ELSE'<p class="{{condition ? 'checkedClass' : 'uncheckedClass'}}">
<p [ngClass]="condition ? 'checkedClass' : 'uncheckedClass'">
<p [ngClass]="[condition ? 'checkedClass' : 'uncheckedClass']">
评论
我尝试了第一种和第二种解决方案。只有第二个为我工作
–user1238784
18年7月2日在7:03
#6 楼
您可以使用ngClass来有条件地而不是在Angular中应用类名。例如,[ngClass]="'someClass'">
有条件的
>
[ngClass]="{'someClass': property1.isValid}">
多重条件
[ngClass]="{'someClass': property1.isValid && property2.isValid}">
方法表达式
[ngClass]="getSomeClass()"
此方法将在组件内部
getSomeClass(){
const isValid=this.property1 && this.property2;
return {someClass1:isValid , someClass2:isValid};
}
#7 楼
您应该使用类似这样的东西([ngClass]
而不是*ngClass
):<ol class="breadcrumb">
<li [ngClass]="{active: step==='step1'}" (click)="step='step1; '">Step1</li>
(...)
#8 楼
在Angular 7.X
中,根据表达式求值的类型,CSS类如下更新:string-字符串(空格中列出的CSS类)分隔符)
Array-声明为Array元素的CSS类被添加
Object-键是在值中给出的表达式计算为真实值时添加的CSS类,否则将其删除。
<some-element [ngClass]="'first second'">...</some-element>
<some-element [ngClass]="['first', 'second']">...</some-element>
<some-element [ngClass]="{'first': true, 'second': true, 'third': false}">...</some-element>
<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>
<some-element [ngClass]="{'class1 class2 class3' : true}">...</some-element>
#9 楼
扩展MostafaMashayekhi对选项2的回答>还可以将多个选项与','链接,
[ngClass]="{'my-class': step=='step1', 'my-class2':step=='step2' }"
也* ngIf可以用于某些这些情况通常与* ngFor
class="mats p" *ngIf="mat=='painted'"
结合使用
#10 楼
在创建反应形式时,我必须在按钮上分配两种类型的类。这是我的工作方式:<button type="submit" class="btn" [ngClass]="(formGroup.valid)?'btn-info':''"
[disabled]="!formGroup.valid">Sign in</button>
当表单有效时,按钮具有btn和btn类(来自引导程序),否则只有btn类。
#11 楼
此外,您还可以添加方法功能:在HTML中
<div [ngClass]="setClasses()">...</div>
在component.ts
// Set Dynamic Classes
setClasses() {
let classes = {
constantClass: true,
'conditional-class': this.item.id === 1
}
return classes;
}
#12 楼
让我们说,“您的条件”是您的条件或布尔属性,然后像这样[class.yourClass]="YourCondition"
#13 楼
ngClass
语法:[ngClass]="{'classname' : conditionFlag}"
您可以这样使用:
<ol class="breadcrumb">
<li [ngClass]="{'active': step==='step1'}" (click)="step='step1'">Step1</li>
<li [ngClass]="{'active': step==='step2'}" (click)="step='step2'">Step2</li>
<li [ngClass]="{'active': step==='step3'}" (click)="step='step3'">Step3</li>
</ol>
#14 楼
这对我有用:[ngClass]="{'active': dashboardComponent.selected_menu == 'profile'}"
#15 楼
您可以使用[ngClass]或[class.classname],两者的作用相同。[class.my-class]="step==='step1'"
或
[ngClass]="{'my-class': step=='step1'}"
两者都可以工作!
#16 楼
与[ngClass]
指令无关,但我也得到与相同的错误。无法读取未定义的属性'remove'在...上
并且我以为是
[ngClass]
条件中的错误,但事实证明我在[ngClass]
条件下尝试访问的属性未初始化。就像我的打字稿文件中有这个文件一样
element: {type: string};
,在我的
[ngClass]
中,我使用的是[ngClass]="{'active', element.type === 'active'}"
,但出现错误
/>
无法读取...中未定义的属性“类型”。
,解决方案是将我的属性修复为/>
希望它对尝试匹配
[ngClass]
中的房产条件的人有所帮助#17 楼
我们可以使用以下语法使类动态化。在Angular 2 plus中,您可以通过多种方式执行此操作:[ngClass]="{'active': arrayData.length && arrayData[0]?.booleanProperty}"
[ngClass]="{'active': step}"
[ngClass]="step== 'step1'?'active':''"
[ngClass]="step? 'active' : ''"
#18 楼
<div class="collapse in " [ngClass]="(active_tab=='assignservice' || active_tab=='manage')?'show':''" id="collapseExampleOrganization" aria-expanded="true" style="">
<ul> <li class="nav-item" [ngClass]="{'active': active_tab=='manage'}">
<a routerLink="/main/organization/manage" (click)="activemenu('manage')"> <i class="la la-building-o"></i>
<p>Manage</p></a></li>
<li class="nav-item" [ngClass]="{'active': active_tab=='assignservice'}"><a routerLink="/main/organization/assignservice" (click)="activemenu('assignservice')"><i class="la la-user"></i><p>Add organization</p></a></li>
</ul></div>
如果有其他条件,代码是ngClass的一个很好的例子。
[ngClass]="(active_tab=='assignservice' || active_tab=='manage')?'show':''"
[ngClass]="{'active': active_tab=='assignservice'}"
#19 楼
尝试这样。.用''
<ol class="breadcrumb">
<li *ngClass="{'active': step==='step1'}" (click)="step='step1; '">Step1</li>
<li *ngClass="{'active': step==='step2'}" (click)="step='step2'">Step2</li>
<li *ngClass="{'active': step==='step3'}" (click)="step='step3'">Step3</li>
</ol>
定义您的课程
评论
angulartutorial.net/2017/12/…