Angular 5 [ngClass] для изменения языковых настроек

Следующий статический HTML <ul> выпадающий (со стилем, включенным ниже) работает отлично. Теперь я пытаюсь преобразовать это в динамический Angular 5 <li> с помощью *ngFor* а также ngClass,

<!-- LANG SELECT - TEST -->
<ul class="nav-item header-dropdown-list hidden-xs">
 <li class="open">
  <a href="#" class="nav-link dropdown-toggle my-1" data-toggle="dropdown" aria-expanded="true"> 
   <img src="./assets/images/blank.gif" class="flag flag-en" alt="United States"> <span> US</span> 
   <!-- <img src="./assets/images/blank.gif" [ngClass]="getSelFlagClass(lang)" alt="United States" #selectedLanguage> <span> US</span>  -->
   
  </a>
  <ul class="dropdown-menu pull-right">
   <!-- <li *ngFor="let lang of translate.getLangs()" 
    [class.active]="clicked === lang"
    [value]="lang" 
    (click)="lang === translate.currentLang" >

    <a href="#"><img src="./assets/images/blank.gif" [ngClass]="getFlagClass(lang)" alt="United States"> {{lang}}</a>
   </li> -->
   <li class="">
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-en" alt="United States"> English (US)</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-fr" alt="France"> Français</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-sp" alt="Spanish"> Español</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-de" alt="German"> Deutsch</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-jp" alt="Japan"> 日本語</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-cn" alt="China"> 中文</a>
   </li> 
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-it" alt="Italy"> Italiano</a>
   </li> 
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-pt" alt="Portugal"> Portugal</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-ru" alt="Russia"> Русский язык</a>
   </li>
   <li>
    <a href="javascript:void(0);"><img src="./assets/images/blank.gif" class="flag flag-kr" alt="Korea"> 한국어</a>
   </li>
  </ul>
 </li>
</ul>

<style>
 
 .flag {
  width: 16px;
  height: 11px;
  background: url(./assets/images/flags.png) no-repeat;
  margin-top: -.18em;
  display: inline-block
 }
 
 .flag.flag-en {  
  background-position: -144px -154px
 }
 .flag.flag-sp { 
  background-position: -16px -44px
 }
    /* additional flag styles omitted */

 .flag {
  text-transform: capitalize;
  display: inline-block;
  max-width: 150px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
  margin-top: -3px
 }
 
 @media (min-width: 768px) and (max-width:979px) {
  .flag+span {
   max-width:30px!important
  }
 }
 

 .header-dropdown-list {
  list-style: none;
  float: right;
  position: relative;
  margin: 0;
  padding-left: 0;
  padding-right: 0
 }
 </style>

Angular версия выглядит так, но я не могу получить верх <a href> флаг для отображения при загрузке (ни когда я повторно выбираю язык).

Если вы посмотрите на снимок экрана ниже, вы увидите, что мой начальный флаг не отображается в верхней части <ul> где это говорит US, Я думаю, я должен справиться с этим @ViewChild() но я не уверен - или, возможно, с @HostBinding(),

<ul class="nav-item header-dropdown-list hidden-xs">
 <li class="open">
  <a href="#" class="nav-link dropdown-toggle my-1" data-toggle="dropdown" aria-expanded="true"> 
   
   <img src="./assets/images/blank.gif" [ngClass]="getSelFlagClass(lang)" alt="United States" #selectedLanguage> <span> US</span> 
   
  </a>
  <ul class="dropdown-menu pull-right">
   <li *ngFor="let lang of translate.getLangs()" 
    [class.active]="clicked === lang"
    [value]="lang" 
    (click)="lang === translate.currentLang" >

    <a href="#"><img src="./assets/images/blank.gif" [ngClass]="getFlagClass(lang)" alt="United States"> {{lang}}</a>
   </li>
  </ul>
 </li>
</ul>

  getFlagClass(sel){
    return "flag flag-" + sel;
  }
  getSelFlagClass(sel){
    // i.e.  class="flag flag-us"
    return "flag flag-" + sel;
  }

0 ответов

Другие вопросы по тегам