如何使用Angular ngClass实现url1 ? class1 : class2
?
增加:
基本上,我需要获取当前URL并将其绑定到元素的条件ngClass,以便如果它是url1
,则class1
将应用于该元素;否则class2
被应用。
答案 0 :(得分:1)
您可以使用路由器查找当前网址...
export class Component implements OnInit {
public url1: string = "";
constructor(private router: Router) {}
ngOnInit() {
this.url1 = this.router.url;
}
}
然后,[ngClass]="url1 ? 'style1' : 'style2'"
应该可以正常工作。
不要忘记导入路由器:
import { Router } from '@angular/router';
答案 1 :(得分:0)
正如the documentation所述,[ngClass]
需要几种类型的表达式:
<some-element [ngClass]="stringExp|arrayExp|objExp">...</some-element>
其中一个字符串表达式。它是
[ngClass]="url1 ? 'style1' : 'style2'"
这不是特定于ngClass,而是整个Angular模板语法。
答案 2 :(得分:0)
我们可以为组件添加一个方法,该方法根据URL返回不同的类名:
class MyComponent {
getClasses() {
const patterns = [
{
pattern: /a\.com/,
className: 'serving-from-a',
},
{
pattern: /b\.com/,
className: 'serving-from-b',
},
];
return patterns
.filter(p => p.pattern.test(window.location))
.map(p => p.className)
.join(' ');
}
}
我们可以在模板中使用此方法
<div [ngClass]="getClasses()"></div>