Renderer kann nicht verwendet werden im Dienst?

Ist es möglich, Renderer im Service oder einfach nur in der Komponente?

Wenn ich Spritzen renderer in-service, den ich erhalten den Fehler, dass das Renderer-provider ist nicht vorhanden.

Sehen plunker-Konsole:

import {Injectable, Component, Renderer, ElementRef} from 'angular2/core';

@Injectable()
class TestService {
  constructor(
    private _renderer: Renderer
    ) {}

  renderElement(elementRef: any) {
    this._renderer.createElement(elementRef.nativeElement, 'div');
  }
}

http://plnkr.co/edit/e8qlznCVbvZnXbLTk36z?p=preview

  • Welches element erwarten Sie injiziert elementRef? Für ein Bauteil oder eine Richtlinie, dies ist das aktuelle element. Einen service hat Sie nicht. Ich benutze nicht die TS, aber ich bin mir ziemlich sicher, dass die ElementRef parameter des Konstruktors muss ein konkreter Typ für den Injektor, um zu wissen, was zu passieren (ElementRef statt any)
  • Ja, ich vergaß hinzuzufügen, ElementRef Art, aber es funktioniert nicht mit es, entweder.
  • Hatte nicht erwartet, dass. Ich wollte nur darauf hinweisen, wie gut. Es ist kein element zu injizieren, die für einen service. Welches element erwarten Sie injiziert? Wo möchten Sie zum aktualisieren der DOM?
  • Sie können RootRenderer zu bekommen Renderer ist, überprüfen Sie diese plnkr. Die Idee kommt aus diesem repo. Alle credits an @justindujardin.
  • danke, das ist clever gemacht. es funktioniert einwandfrei. Wenn Sie eine Antwort...
InformationsquelleAutor eesdil | 2016-01-10
Schreibe einen Kommentar