Я создаю трубу в Angular 6, которая возвращает текстовое поле, если проходят некоторые условия. Поскольку входные данные не являются безопасными .. Я использую bypassSecurityTrustHtml, чтобы обойти эту проблему. Теперь у меня есть другая проблема ... он показывает текстовое поле, но я не могу написать или изменить его. Не выглядит отключенным, но я не могу выбрать его и ничего изменить.
Кто-нибудь знает, что происходит? Спасибо!!
import { Pipe, PipeTransform } from '@angular/core';
import { validateConfig } from '@angular/router/src/config';
import { TYPED_NULL_EXPR } from '@angular/compiler/src/output/output_ast';
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
@Pipe({
name: 'appConvertElement',
pure: false
})
export class ConvertElementPipe implements PipeTransform {
constructor( private _sanitizer: DomSanitizer) { }
transform(text: string, field: string) {
return this.ConvertValue(text, field);
}
private ConvertValue(text: string, field: string) {
let transformText = text;
if (condition)
return this.createTextBox(text,field);
}
return transformText;
}
createTextBox(text,id) {
let textBox = document.createElement('input');
textBox.type = 'text';
textBox.setAttribute("value", text);
textBox.id = id;
textBox.name = id;
textBox.value = text;
textBox.title = text;
// return textBox.outerHTML;
return this.safeHTML(textBox.outerHTML);
}
safeHTML(v: string): SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(v);
}
}
HTML это:
<div [innerHTML]="value | appConvertElement: field"></div>