L'idée:Angulaire2. Comment imprimer une balise HTML dans un template, qui vient du paramètre @Input()?
<h2 *ngIf="tag == 'h2'"></h2>
<h3 *ngIf="tag == 'h3'"></h3>
<p *ngIf="tag == 'p'"></p>
Je veux obtenir le tag
dynamique, en fonction de la valeur de la propriété de l'étiquette. Le tag
est un paramètre Input()
PS: Je l'ai essayé de le faire: <{{tag}></{{tag}}>
, mais il donne et l'erreur et ne fonctionne pas
<div (mouseenter)="setEditMode()" [innerHTML]="result | safeHtml" *ngIf="!editMode"></div>
<div (mouseleave)="setViewModeIfNotFocused()" *ngIf="editMode">
<input type="text" [(ngModel)]="content" #inputEl>
</div>
-
import { Component, Input, OnInit, ViewChild } from '@angular/core';
@Component({
selector: 'ui-edit-field',
templateUrl: 'edit-field.component.html'
})
export class UiEditFieldComponent implements OnInit {
@ViewChild('inputEl')
public inputEl: any;
@Input('tag')
public tag: string;
@Input('classes')
public classes: string;
@Input('content')
public content: string;
public result: string;
public editMode = false;
constructor() {
}
ngOnInit() {
this.result = '<' + this.tag + ' class="' + this.classes + '">' + this.content + '</' + this.tag + '>';
}
setEditMode() {
this.editMode = true;
}
setViewModeIfNotFocused() {
if (true) {
this.editMode = false;
}
}
}
Il n'est pas un élément angulaire, mais l'approche ne correspond pas à mes besoins, car il breacs « contenu » liant (ajouté le code source complet dans la question) – Sergej
Que voulez-vous dire par « contenu» de liaison "? –
La propriété 'content'. Je l'édite dans l'entrée [(ngModel)] = "content", mais quand je rentre dans le ViewMode - le contenu reste déconnecté du moment d'initialisation. Je pense, je dois réassigner la variable de résultat, sur l'événement de changement de modèle. – Sergej