Angular 如果单击按钮组内的按钮,如何切换按钮的颜色?
Angular How to toggle the color of a button which is inside a button group if it is clicked?
我在 angular 6 组件中有一组按钮:
<div class="container">
<div class="row">
<div class="clearfix text-center" [hidden]="!searchTerm">
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn btn-primary" (click)="performSearch(searchTerm)">All</button>
<button type="submit" class="btn btn-secondary" (click)="domainesFilter(searchTerm)">Domaines</button>
<button type="submit" class="btn btn-secondary" (click)="sectionsFilter(searchTerm)">Sections</button>
<button type="submit" class="btn btn-secondary" (click)="groupsFilter(searchTerm)">Groups</button>
<button type="submit" class="btn btn-secondary" (click)="documentFilter(searchTerm)">Documents</button>
</div>
</div>
</div>
</div>
我想在点击按钮时将其颜色更改为主要颜色,并将其他按钮的颜色设置为次要颜色,我该如何实现?
你可以这样做:
组件 ts
@Component({
selector: 'app-my',
templateUrl: './my.component.html',
styleUrls: ['./my.component.css']
})
export class MyComponent implements OnInit {
selBtn: string;
constructor() { }
ngOnInit() {
}
performA(): void {
this.selBtn = 'a';
}
performB(): void {
this.selBtn = 'b';
}
performC(): void {
this.selBtn = 'c';
}
performD(): void {
this.selBtn = 'd';
}
performE(): void {
this.selBtn = 'e';
}
}
模板
<div class="container">
<div class="row">
<div class="clearfix text-center">
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn {{ selBtn === 'a' ? 'btn-primary' : 'btn-secondary' }}" (click)="performA()">A</button>
<button type="submit" class="btn {{ selBtn === 'b' ? 'btn-primary' : 'btn-secondary' }}" (click)="performB()">B</button>
<button type="submit" class="btn {{ selBtn === 'c' ? 'btn-primary' : 'btn-secondary' }}" (click)="performC()">C</button>
<button type="submit" class="btn {{ selBtn === 'd' ? 'btn-primary' : 'btn-secondary' }}" (click)="performD()">D</button>
<button type="submit" class="btn {{ selBtn === 'e' ? 'btn-primary' : 'btn-secondary' }}" (click)="performE()">E</button>
</div>
</div>
</div>
</div>
否则,您可以将 .btn-secondary 分配给所有按钮,然后仅在必要时添加 btn-primary,如下所示:
<button type="submit" class="btn btn-secondary" [ngClass]="{'btn-primary' : selBtn === 'e'}" (click)="performE()">E</button>
使用此解决方案,您可能需要调整 css 以确保 btn-primary class 覆盖 btn-secondary class
的所有属性
<div class="container">
<div class="row">
<div class="clearfix text-center" >
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='All', 'btn-secondary':ActiveButton!='All'}" (click)="Search(searchTerm, 'All')">All</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Domaines', 'btn-secondary':ActiveButton!='Domaines'}" (click)="Search(searchTerm, 'Domaines')">Domaines</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Sections', 'btn-secondary':ActiveButton!='Sections'}" (click)="Search(searchTerm, 'Sections')">Sections</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Groups', 'btn-secondary':ActiveButton!='Groups'}" (click)="Search(searchTerm, 'Groups')">Groups</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Documents', 'btn-secondary':ActiveButton!='Documents'}" (click)="Search(searchTerm, 'Documents')">Documents</button>
</div>
</div>
</div>
</div>
而js代码是这样的
Search(searchTerm, btn) {
this.ActiveButton = btn;
switch ( btn ) {
case 'All':
console.log('All');
break;
case 'Domaines':
console.log('Domaines');
break;
case 'Sections':
console.log('Sections');
break;
case 'Groups':
console.log('Groups');
break;
case 'Documents':
console.log('Documents');
break;
}
}
我在 angular 6 组件中有一组按钮:
<div class="container">
<div class="row">
<div class="clearfix text-center" [hidden]="!searchTerm">
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn btn-primary" (click)="performSearch(searchTerm)">All</button>
<button type="submit" class="btn btn-secondary" (click)="domainesFilter(searchTerm)">Domaines</button>
<button type="submit" class="btn btn-secondary" (click)="sectionsFilter(searchTerm)">Sections</button>
<button type="submit" class="btn btn-secondary" (click)="groupsFilter(searchTerm)">Groups</button>
<button type="submit" class="btn btn-secondary" (click)="documentFilter(searchTerm)">Documents</button>
</div>
</div>
</div>
</div>
我想在点击按钮时将其颜色更改为主要颜色,并将其他按钮的颜色设置为次要颜色,我该如何实现?
你可以这样做:
组件 ts
@Component({
selector: 'app-my',
templateUrl: './my.component.html',
styleUrls: ['./my.component.css']
})
export class MyComponent implements OnInit {
selBtn: string;
constructor() { }
ngOnInit() {
}
performA(): void {
this.selBtn = 'a';
}
performB(): void {
this.selBtn = 'b';
}
performC(): void {
this.selBtn = 'c';
}
performD(): void {
this.selBtn = 'd';
}
performE(): void {
this.selBtn = 'e';
}
}
模板
<div class="container">
<div class="row">
<div class="clearfix text-center">
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn {{ selBtn === 'a' ? 'btn-primary' : 'btn-secondary' }}" (click)="performA()">A</button>
<button type="submit" class="btn {{ selBtn === 'b' ? 'btn-primary' : 'btn-secondary' }}" (click)="performB()">B</button>
<button type="submit" class="btn {{ selBtn === 'c' ? 'btn-primary' : 'btn-secondary' }}" (click)="performC()">C</button>
<button type="submit" class="btn {{ selBtn === 'd' ? 'btn-primary' : 'btn-secondary' }}" (click)="performD()">D</button>
<button type="submit" class="btn {{ selBtn === 'e' ? 'btn-primary' : 'btn-secondary' }}" (click)="performE()">E</button>
</div>
</div>
</div>
</div>
否则,您可以将 .btn-secondary 分配给所有按钮,然后仅在必要时添加 btn-primary,如下所示:
<button type="submit" class="btn btn-secondary" [ngClass]="{'btn-primary' : selBtn === 'e'}" (click)="performE()">E</button>
使用此解决方案,您可能需要调整 css 以确保 btn-primary class 覆盖 btn-secondary class
的所有属性<div class="container">
<div class="row">
<div class="clearfix text-center" >
<span class="inline">Filter results by :</span>
<div class="float-right">
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='All', 'btn-secondary':ActiveButton!='All'}" (click)="Search(searchTerm, 'All')">All</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Domaines', 'btn-secondary':ActiveButton!='Domaines'}" (click)="Search(searchTerm, 'Domaines')">Domaines</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Sections', 'btn-secondary':ActiveButton!='Sections'}" (click)="Search(searchTerm, 'Sections')">Sections</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Groups', 'btn-secondary':ActiveButton!='Groups'}" (click)="Search(searchTerm, 'Groups')">Groups</button>
<button type="submit" class="btn" [ngClass]="{'btn-primary':ActiveButton=='Documents', 'btn-secondary':ActiveButton!='Documents'}" (click)="Search(searchTerm, 'Documents')">Documents</button>
</div>
</div>
</div>
</div>
而js代码是这样的
Search(searchTerm, btn) {
this.ActiveButton = btn;
switch ( btn ) {
case 'All':
console.log('All');
break;
case 'Domaines':
console.log('Domaines');
break;
case 'Sections':
console.log('Sections');
break;
case 'Groups':
console.log('Groups');
break;
case 'Documents':
console.log('Documents');
break;
}
}