我正在尝试创建一个服务来注入
在组件中使用Render2时,我的Render2实现可以完美工作,但通过服务使用Render2时,我会遇到以下错误:
果心js:15724错误:未捕获(promise中):错误:StaticInjectorError(AppModule)[ContactUsPageComponent-
我已尝试在AppModule中导入RenderR2,但收到以下通知:
(别名)类RenderR2导入RenderR2扩展此基类以实现自定义渲染。默认情况下,Angular将模板渲染到DOM中。您可以使用自定义渲染来拦截渲染调用,或渲染到DOM以外的其他对象。
使用RenderFactory2创建自定义渲染器。
使用自定义渲染器绕过Angular的模板,并进行无法声明性表达的自定义UI更改。例如,如果需要设置名称不是静态已知的属性或属性,请使用setProperty()或setAttribute()方法。
这是我的服务实现:
import { Injectable, Renderer2, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Injectable({
providedIn: 'root'
})
export class ChatbotService {
constructor(private renderer2: Renderer2, @Inject(DOCUMENT) private document) {}
showChatbot() {
const s = this.renderer2.createElement('script');
s.type = 'text/javascript';
s.id = 'ze-snippet';
s.src = 'https://static.zdassets.com/ekr/snippet.js?key=7e...';
s.text = ``;
this.renderer2.appendChild(this.document.body, s);
}
}
我只是使用:
this从组件调用它。聊天服务。showChatbot()
任何关于如何正确实施的建议都将不胜感激!
这是我问题的答案:
注意:要在服务中使用Renderer2,您需要使用RendererFactory2创建Renderer2的实例。从那里它是直接向前的。
这是我的服务代码:
import { Injectable, Renderer2, RendererFactory2, Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Injectable({
providedIn: 'root'
})
export class ChatbotService {
private renderer: Renderer2;
constructor(private rendererFactory: RendererFactory2, @Inject(DOCUMENT) private document) {
this.renderer = rendererFactory.createRenderer(null, null);
}
showChatbot() {
const s = this.renderer.createElement('script');
s.type = 'text/javascript';
s.id = 'ze-snippet';
s.src = 'https://static.zdassets.com/ekr/snippet.js?key=7e...';
s.text = ``;
this.renderer.appendChild(this.document.body, s);
}
}
这是我的组件调用:this.chatbotService.showChatbot();
希望这能帮助别人!
我正在尝试将服务人员添加到现有的angular(5.2,CLI 1.7.1)应用程序中。我做了我应该做的一切: > 我甚至尝试将这段代码(我在某处找到了解决方案)添加到main。ts 但我有一个错误: 未捕获(promise中)DOMExc0019:注册ServiceWorker失败:脚本具有不受支持的MIME类型('text/html')。 错误:未捕获(promise中):安全错误:注册Ser
我在同一个文件夹(tut67)中创建了这个javascript文件,index.html,about.html,contact.html,services.html,但它仍然给出了每个html文件的错误。(我使用MacBook Air)。 代码如下::: 常量about=fs.readfileSync('./about.html'); const contact=fs.readfileSync('
我正在intellij上启动一个tomcat服务器(没有部署任何东西),但我得到以下错误。我一直在找它,但没有运气。你能帮帮我吗? 编辑: 应用程序.属性:
我不能运行Springeureka服务器,我得到以下错误。 组织。springframework。豆。工厂UnsatifiedPendencyException:创建名为“org”的bean时出错。springframework。云netflix。尤里卡。EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration:通过字段“
问题内容: 我已经看到angular.factory()和angular.service()都用于声明服务;但是,我在官方文档中找不到 任何地方。 两种方法有什么区别? 应该使用哪个(假设他们做不同的事情)? 问题答案: 直到我以这种方式对自己说: 服务 :您编写的 函数 将是 新的 -ed: Factory* :将 调用 您编写的 函数 (构造函数): * 您可以根据自己的意愿进行操作,但是有一
我在创建一个返回“hello”字符串的简单web服务时遇到了以下错误 白标签错误页此应用程序没有/Error的显式映射,因此您将其视为回退。 我的Web服务终结点: 我的配置类: 我的依赖关系: 我的项目结构: