Интерполировать HTML-строки в Angular

#html #angular #typescript #angular-directive

#HTML #angular #typescript #angular-директива

Вопрос:

У меня есть html, который выглядит следующим образом:

 <div *ngFor="let s of project.sections">
    <div class="project-desc-section">
         <h2>{{s.heading}}</h2>
         <div *ngFor="let w of s.work">
             {{w}}
         </div>
    </div>
</div>
  

Объекты моего проекта выглядят следующим образом

 { 
                name: "Project Name",
                id:"bbs",
                isClicked:false,
                description:`Sick app description`,
                sections:[
                            {
                                heading: "Mr header",
                                work:[
                                    '<p>Some cool stuff to talk about</p>',
                                    '<img src="https://www.google.com/logos/doodles/2015/googles-new-logo-5078286822539264.3-hp2x.gif">'
                                    
                                ] 
                            }
                    
                ]
            },
  

И это фактические классы, если кому-то интересно:

 export class Project{

    name:string;
    id:string;
    description:string;
    isClicked:boolean;
    sections:Section[];
    
   
    constructor(id:string,name:string,description:string,isClicked:boolean,sections:Section[]) {
        this.id=id;
        this.name = name;
        this.description = description;
        this.isClicked = isClicked;
        this.sections = sections;
    }
}

export class Section{

    heading:string;
    work:HTMLElement[];
    
    
    constructor(heading:string,work:HTMLElement[]) {
        this.heading = heading;
        this.work = work;
    }
}
  

Ни для кого не сюрприз, angular не компилирует HTML, он просто интерполирует их как строки:
Результат HTML

Итак, есть ли какой-либо способ заставить angular скомпилировать HTML? Я знаю, что это не «угловой способ», но это мой личный веб-сайт, поэтому я беру на себя полную свободу действий. Я также согласен, если вы считаете, что способ, которым я структурировал это, был плохим выбором дизайна, но я уже слишком далеко зашел в эту кроличью нору!

Ответ №1:

Вы можете использовать для этого innerHTML свойства.

Пример:

 <div [innerHTML]="yourVariable"></div>