0

Ich habe eine Tabelle in eckigen 2 Ansicht erstellt und ich möchte HTML oder eckige Komponente dynamisch binden.Angular 2 dynamic html

<tbody> 
     <tr *ngFor="let hHeader of hHeaders;let x=index"> 
     <td class="hour"><span>{{hHeader}}</span></td> 
     <td *ngFor="let vHeader of vHeaders;let y=index" class="hour " [contextMenu]="basicMenu " [contextMenuSubject]="{t:hHeader,d:vHeader,x:x,y:y} "> 
      <div #values [class.cell]="cell" id="cell-{{x}}-{{y}}" style="width:100%; height: 100%"></div> 
     </td> 
     </tr> 
    </tbody> 

kann ich jede Zelle in der Komponente

for (let i = 0; i < cells.length; ++i) { 
     if (cells[i].nativeElement.id == 'cell-' + event.x + '-' + event.y) { 
     // cells[i].nativeElement.style.backgroundColor = '#5789D8'; 
     cells[i].nativeElement.innerHTML = '<div class="drag" dnd-draggable [dragEnabled]="true">Drag me</div>' 
     console.log(cells[i]); 
     } 
    } 

identifizieren, aber ich kann so html oder Component nicht binden.

<div class="drag" dnd-draggable [dragEnabled]="true">Drag me</div> 
+0

, was Sie genau suchen? –

+0

Ich möchte HTML oder eckige 2 Komponente zu – Ishaka

+0

hinzufügen Programm nicht so programmieren. Das DOM ist keine große Saite, die man konstruiert und irgendwo einklebt. Selbst wenn Sie das tun, wird keine Winkellogik innerhalb Ihrer großen innerHTML-Zeichenfolge interpretiert. Schreiben Sie HTML in Ihre Vorlage. –

Antwort

0

Wenn Sie gerade suchen html auf Ihre td zu binden, wie es sich anhört, dann können Sie nur das Attribut innerHTML- verwenden

<td ...[innerHTML]="whateverValue"...> 
+0

ich denke, 'nativeElement.innerHTML = '

Drag me
'' dieser wird nicht kompiliert kompilieren. Es dauert als Zeichenfolge. Ich habe ein paar npm-Pakete benutzt. Sie arbeiten nicht – Ishaka

0

ich lieber mit Rohren für diese. https://angular.io/guide/security#bypass-security-apis

fand ich diese in einem Forum https://forum.ionicframework.com/t/inserting-html-via-angular-2-use-of-domsanitizationservice-bypasssecuritytrusthtml/62562/2

import {Pipe, PipeTransform} from '@angular/core'; 
import {DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser'; 

@Pipe({ 
    name: 'safe' 
}) 
export class SafePipe implements PipeTransform { 

constructor(protected _sanitizer: DomSanitizer) { 

} 

    public transform(value: string, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl { 
     switch (type) { 
      case 'html': return this._sanitizer.bypassSecurityTrustHtml(value); 
      case 'style': return this._sanitizer.bypassSecurityTrustStyle(value); 
      case 'script': return this._sanitizer.bypassSecurityTrustScript(value); 
      case 'url': return this._sanitizer.bypassSecurityTrustUrl(value); 
      case 'resourceUrl': return this._sanitizer.bypassSecurityTrustResourceUrl(value); 
      default: throw new Error(`Invalid safe type specified:  ${type}`); 
     } 
    } 

} 

nur <component-container [innerHtml]='this.safteyPipe.transform(TemplateComponentString)'></component-container> Für die Umsetzung verwenden