Подтвердить что ты не робот

Как перевести HTML-строку в реальный элемент HTML с помощью ng-for в Angular 2

Как я знаю, в angular 1.x я могу использовать службу $sce для удовлетворения моего требования вроде этого

myApp.filter('trustAsHTML', ['$sce', function($sce){
  return function(text) {
    return $sce.trustAsHtml(text);
  };
}]);

и в html файле используйте это

{{ htmlString || trustAsHTML }}

Есть ли такая услуга, как $sce или какой-либо канал или какой-либо метод может быть компетентным, чтобы сделать это в версии angularjs 2?

4b9b3361

Ответ 1

В angular2 нет ng-include, trustAsHtml, ng-bind-html и ничего подобного, поэтому наилучшим вариантом является привязка к innerHtml. Очевидно, что это позволяет вам открывать все виды атак, поэтому вам решать разобрать/избежать содержимого, и для этого вы можете использовать каналы.

@Pipe({name: 'escapeHtml', pure: false})
class EscapeHtmlPipe implements PipeTransform {
   transform(value: any, args: any[] = []) {
       // Escape 'value' and return it
   }
}

@Component({
    selector: 'hello',
    template: `<div [innerHTML]="myHtmlString | escapeHtml"></div>`,
    pipes : [EscapeHtmlPipe]
})
export class Hello {
  constructor() {
    this.myHtmlString = "<b>This is some bold text</b>";
  }
}

Здесь plnkr с наивным html-экранированием/разбором.

Надеюсь, это поможет:)

Ответ 2

Простейшее решение:

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

Где some_string может быть html-кодом, например: some_string = "<b>test</b>".

Нет труб или чего-то еще. Поддерживается Angular 2.0

Ответ 3

Я получил ту же самую проблему купить Я запрашиваю декодирование HTML из Backend и их вы можете ввести html на свою страницу

// YOUR TS
@Component({
  selector: 'page',
  templateUrl: 'page.html'
})
export class Page {
  inject:any;
  constructor( ) { }

  ionViewDidLoad() {
    this.inject='your HTML code'

  }

}
// YOU HTML PAGE

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

Ответ 4

Для привязки свойств ниже: <div innerHtml="{{ property }}"></div>

Только для строки: <div [innerHtml]="<p>property</p>"></div>