如何在angular 6中使用自定义指令渲染动态生成的嵌入式SVG

克里希纳

我在应用程序中呈现动态生成的嵌入式SVG时遇到困难。

我编写了一个自定义指令,该指令可从化学反应数据生成内联SVG。

rxn-to-image.directive.ts

@Directive({
  selector: '[appRxnToImage]'
})
export class RxnToImageDirective implements OnInit {
  @Input()
  set appRxnToImage(rxnString: any) {
    this.generateImageFromRxn(rxnString);
  }

  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainerRef: ViewContainerRef,
    private renderer: Renderer2,
    private el: ElementRef
  ) {}
  ngOnInit() {

  }
  private generateImageFromRxn(rxn) {
    // custom method that generated inline svg dynamicaaly 
    MarvinJSUtil.getPackage('#marvinjs-iframe').then(marvinNameSpace => {
      marvin = marvinNameSpace;
      const exporter = customMethodThatCreatesExporter;
      exporter.render(rxn).then(
        svg => {
          // once svg generated i will call applySvg method to render svg
          this.applySvg(svg);
        },
        error => {
          alert(error);
        }
      );
    });
  }
  private applySvg(svg) {
    this.templateRef.elementRef.nativeElement.innerHTML = svg;
    this.viewContainerRef.createEmbeddedView(this.templateRef);
  }

}

SVG会这样:

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="225" xmlns:ev="http://www.w3.org/2001/xml-events" style="overflow: hidden; "><</svg>

像这样从模板调用指令:

<div *appRxnToImage="reactionString"></div>

我想在div中渲染生成的嵌入式SVG。

这样渲染SVG。

this.templateRef.elementRef.nativeElement.innerHTML = svg;
this.viewContainerRef.createEmbeddedView(this.templateRef);

有人可以帮我吗?

4

这是对该修补程序的参考:https : //stackblitz.com/edit/g4j-structural-directive?file= src/ main.ts

创建嵌入视图后基本上,你可以访问根节点(在你的例子在div),并设置的innerHTML他们(线37RXN到image.directive.ts

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用嵌入式Jetty设置静态资源和自定义服务?

如何在Angular 6中使用ngModel创建自定义输入组件?

如何使用注释代替XML在嵌入式Tomcat中创建自定义组件标签

如何在Angular 2.0中创建自定义验证指令(即验证属性)?

Telegram bot:如何使用嵌入式键盘发送消息并同时隐藏自定义键盘?

如何在猫鼬中使用$ set动态更新嵌入式文档

如何在自定义Rmarkdown中存储嵌入式文件(包括)

如何在Angular 5的自定义验证指令中使用多个参数?

如何在angular 4中使用自定义jquery插件

如何在Vba中使用标题打开Excel中的嵌入式对象?

如何在angular 6项目中使用自定义jquery代码?

如何上传自定义字体并在angular 6中动态使用它

如何在angular中创建自定义指令

Angular如何在自定义ErrorHandler中使用HttpClient?

如何仅使用嵌入式CSS(用于电子邮件)自定义无序列表项目符号?

如何在Vue 3中使用Typescript创建全局自定义指令

如何在SVG中制作嵌入式投影

如何在Swift中为自定义结构和类更改默认的嵌入式字符串

如何在嵌入式框架中使用Cocoapods?

使用Angular指令动态创建嵌入式对象

如何使用vimeo嵌入式代码创建自定义的seekTo播放器界面?

如何在自定义Angular指令中更改ng-model范围值?

如何在angular js中实现自定义指令?

如何在Angular2中使用不带ngModel的双向绑定编写自定义指令

如何在angular2应用程序中使用Braintree的嵌入式UI?

如何在 angular 5 中使用启用的“as 语法”创建自定义指令?

如何在 angular 4 中使用 ngFor 动态渲染 svg

如何在 ANGULAR 8 中双向绑定自定义指令?

如何在 Vite 中使用嵌入式 Webassembly?