html - Cum să realizezi legătura bidirecțională a datelor pe proprietatea innerhtml a unui div folosind ngModel?
În fișierul meu ts al componentului Angular am un model, cu o proprietate a cărei valoare este text formatat HTML. Textul este afișat în interfața utilizatorului folosind proprietatea inner HTML a unui div din fișierul .html al componentului meu. Div-ul este făcut editabil prin setarea proprietății editable.
Fragment de cod :
<div id="requestBody" contenteditable="true"
*ngIf="selectedReqTab==='reqBody'" [innerHTML]="formatJson(requestBody)"></div>
Aici formatJson returnează textul JSON formatat în HTML.
Problema :
Modificările făcute în text nu se reflectă în modelul corespunzător, chiar dacă avem legare bidirecțională a datelor folosind ngModel.
<div id="requestBody" contenteditable="true"
*ngIf="selectedReqTab==='reqBody'" [(ngModel)]=”requestBody”
[innerHTML]="formatJson(requestBody)"></div>
Ce fac greșit aici? Ai putea să sugerezi, te rog.
Răspuns #1
`contenteditable` nu este un input, iar legarea bidirecțională funcționează pe inputuri.
Trebuie să actualizezi modelul tău prin evenimente input, așa cum este arătat aici
<p (input)="updateModel(model.innerText)" #model contenteditable>{{ name }}</p>
