请在这里添加"活跃"在" lang"单击菜单后的类名div。就像用户点击"英语"菜单然后"活跃" class add in" english"名称ID部分以及用户点击"印地语"菜单"活跃"课程加入"印地文"名称ID部分并从"英语"中删除name id setion和除#34; hindi"之外的所有部分。名称ID部分。
我在jquery中添加了我的要求,但我在Angular 4中需要这个功能
$(document).ready(function(){
$('ul li').click(function(){
var dl = $(this).attr('data-lang');
$(this).addClass('active');
$(this).siblings().removeClass('active');
$('.lang').removeClass('active');
$('#'+dl).addClass('active');
});
});

ul{margin:0; padding:0;}
ul li{list-style:none; display:inline-block; padding:7px 10px; background:#000; color:#fff; border-radius:3px;}
.clear{clear:both: height:40px;}
.lang{display:none; background:#f3f7f8; padding:30px;}
.lang.active{display:block !important;}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<ul>
<li data-lang="english" class="active">English</li>
<li data-lang="hindi">Hindi</li>
<li data-lang="telugu">Telugu</li>
</ul>
<div class="clear"></div>
<div class="lang active" id="english">Show English Section</div>
<div class="lang" id="hindi">Show Hindi Section</div>
<div class="lang" id="telugu">Show Telugu Section</div>
&#13;
答案 0 :(得分:1)
这是 Angular方式的要求,我还创建了 Plunker 。
我使用了*ngIf
,(click)
和[ngClass]
Angular指令。
ngClass指令更改绑定到的类属性 它附加的组件或元素。
<强>步骤:强>
setActive
功能,使当前点击li
处于有效状态。jquery
和data-lang
代码并以有角度的方式完成。lang
类。[ngClass]
使该课程成为活跃的li
,具体取决于variable
<强>代码:强>
import { Component } from '@angular/core';
import { Modal } from 'ng2-modal'
@Component({
selector: 'my-app',
directives: [Modal],
template: `
<ul>
<li (click)="setActive('english')" class="active">English</li>
<li (click)="setActive('hindi')">Hindi</li>
<li (click)="setActive('telugu')">Telugu</li>
</ul>
<div class="clear"></div>
<div class="lang" *ngIf="active == 'english'" [ngClass]="{'active':active == 'english'}" id="english">Show English Section</div>
<div class="lang" *ngIf="active == 'hindi'" [ngClass]="{'active':active == 'hindi'}" id="hindi">Show Hindi Section</div>
<div class="lang" *ngIf="active == 'telugu'"[ngClass]="{'active':active == 'telugu'}" id="telugu">Show Telugu Section</div>
`
})
export class AppComponent {
public active = "english"
setActive(lang){
this.active = lang;
}
}
答案 1 :(得分:1)
您可以使用Angular [class.className]="condition"
语法。
在我的系统中为语言创建模型或界面是一种很好的做法(至少对我自己而言)。通过这种方式,您可以获得完整的打字稿功能,并且可以更轻松地使用语言。
如果您不需要对对象进行动态更改,我会选择界面,尤其是如果您不需要任何自定义的getter和setter。
// interfaces/Language.ts
export interface Language {
id: number;
name: string;
}
在您的组件中,您将拥有一系列语言(或者您可以使用服务,这对我来说也更有意义)。
@Component({/* ... */})
export class SomeComponent {
languages: Language[];
activeLanguage: Language;
constructor() {
this.languages = [
{ id: 1, name: 'English' },
{ id: 2, name: 'Hindi' },
{ id: 3, name: 'Telugu' },
];
// You can also create a default logic for setting activeLanguage
// e.g.: set the active language based on data from some service
// or just set the default language (English for example)
this.activeLanguage = this.languages[0];
}
}
通过这种方式,您可以更轻松,更短,更易读地使用语言选择模板。如下:
<ul *ngIf="languages.length">
<li *ngFor="let language of languages"
(click)="activeLanguage = language"
[class.active]="activeLanguage === language">
{{ language.name }}
</li>
</ul>
如果您想要显示所有部分,但仅将活动课程添加到activeLanguage
部分,请执行以下操作:
<div class="lang" [class.active]="activeLanguage.id === 1">Show English Section</div>
<div class="lang" [class.active]="activeLanguage.id === 2">Show Hindi Section</div>
<div class="lang" [class.active]="activeLanguage.id === 3">Show Telugu Section</div>
如果您只想显示activeLanguage
部分,则不必担心课程,因为只会显示所选语言的部分
<div *ngIf="activeLanguage.id === 1" class="lang active">Show English Section</div>
<div *ngIf="activeLanguage.id === 2" class="lang active">Show Hindi Section</div>
<div *ngIf="activeLanguage.id === 3" class="lang active">Show Telugu Section</div>
请注意,在此示例中,不需要active
类,因为只显示的部分是活动部分。
另外,请记住,如果有任何方法可以动态地为各个部分创建内容,您可以再次循环使用这些语言,这将再次导致更短更简单的语法,如下所示: / p>
<div *ngFor="let language of languages"
class="lang"
[class.active]="activeLanguage === language">
<!-- Build content somehow -->
</div>
希望我能清除一点。