加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 渲染器不能用于服务?

发布时间:2020-12-17 07:23:05 所属栏目:安全 来源:网络整理
导读:是否可以在服务中使用Renderer或仅在组件中使用? 如果我将渲染器注入服务器,则会出现错误,即Renderer提供程序丢失. 请参阅plunker的控制台: import {Injectable,Component,Renderer,ElementRef} from 'angular2/core';@Injectable()class TestService { co
是否可以在服务中使用Renderer或仅在组件中使用?

如果我将渲染器注入服务器,则会出现错误,即Renderer提供程序丢失.

请参阅plunker的控制台:

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

是的,就像Eric说的那样,你可以将它从实际的组件传递给服务,它会起作用.

但是,呈现对象的责任属于组件,而不是服务,服务旨在处理业务逻辑(主要检索数据,具体取决于您的应用程序).

整个想法是,如果您更改了演示文稿框架/库或任何与演示相关的内容,您可以重用整个服务层.如果您执行此类操作,则需要将您的服务与演示文稿相结合,从而更难以制作稍后改变.

如果你想在组件之间重用渲染逻辑,我会用逻辑创建一个父抽象类,并用Component扩展它,子组件会注入渲染器并用super()方法传递给父类.应该调用父的构造函数.

至少你可以像建议的解决方案一样创建一个@Injectable对象,但是将其命名为SomethingRenderer而不是Service,并将其与其他真实的Data Services分开.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读