Angular — добавить раскрывающийся список в div

Я пытаюсь добавить раскрывающийся список в div. HTML-код (например, раскрывающийся список) является динамическим кодом. Несмотря на то, что при нажатии на него отображается кнопка раскрывающегося списка, но раскрывающийся список не работает. Ниже приведен мой код из файла компонента

import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
@ViewChild('showfilters') el:ElementRef;


this.el.nativeElement.innerHTML = this.el.nativeElement.innerHTML + `
<div class="dropdown " dropdown>
   <a class="dropdown-toggle  text-light" dropdownToggle> New Dropdown</a>
   <div class="dropdown-menu mt-2 mr-3" *dropdownMenu>
     <a class="dropdown-item"> Profile</a>
     <a class="dropdown-item" href="#">Another action</a>
     <div class="dropdown-divider"></div>
       <a class="dropdown-item"><i class="fa fa-sign-out"></i>New</a>
   </div>
</div>
`;

Мой HTML <div class="showfilters" #showfilters>

Я создал пример на StackBlitz< /а> тоже.


person Saad Bashir    schedule 06.05.2020    source источник
comment
ваша проблема заключается в добавлении динамической директивы в div /45084292/   -  person Hien Nguyen    schedule 06.05.2020
comment
Итак, основываясь на ответе в ссылке, я не могу динамически добавлять раскрывающийся список?   -  person Saad Bashir    schedule 06.05.2020
comment
Вы можете... это не так просто, как добавление HTML к документу (что в любом случае никогда не бывает хорошей идеей в angular).   -  person Mike S.    schedule 06.05.2020


Ответы (1)


Я настоятельно рекомендую не добавлять HTML в ваш компонент таким образом, вместо этого вы можете просто использовать *ngFor с небольшим хаком.

Разветвлено: https://stackblitz.com/edit/bootstrap-dropdown-angular-xcg7xf< /а>

Взлом... *ngFor="let dummy of ' '.repeat(dropDownCount).split('')"

в основном создает массив с точной длиной вашей переменной, чтобы *ngFor мог его перебирать.

Если вы настаиваете на добавлении HTML через свой компонент, вам, возможно, придется взглянуть на это: Эквивалент $compile в Angular 2

person Mike S.    schedule 06.05.2020
comment
Спасибо за ваш добрый ответ. Пожалуйста, обратите внимание, что HTML-код является динамическим. Я сомневаюсь, что это будет работать с динамическим. - person Saad Bashir; 06.05.2020
comment
Тогда этот вопрос может быть дубликатом связанного вопроса. - person Mike S.; 06.05.2020