简体   繁体   中英

add Vexflow in angular 6

I'm trying to add vexflow to my angular 6 app...

I tried to add this line in my typings.d.ts file

declare var Vex: any;

and vexflow-min.js in my angular.json

  "scripts": [
             ...
             "./node_modules/vexflow/releases/vexflow-min.js",
             ...
            ],

I'm trying to render an element in my app.component.ts

  ngOnInit(){
      var div = document.getElementById("vexflow-test")
      var VF = Vex.Flow;
      renderer = new VF.Renderer(div,VF.Renderer.Backends.SVG);
  }

I can see Vex is correctly loaded (console.log(Vex)) But I got an error telling me Renderer is undefined

AppComponent_Host.ngfactory.js? [sm]:1 ERROR ReferenceError: renderer is not defined

Ok this is working now

   public VF;
   onNgInit(){
        var div = document.getElementById("vexflow-player")
        this.VF = Vex.Flow;
        var renderer = new this.VF.Renderer(div,this.VF.Renderer.Backends.SVG);
        renderer.resize(500, 500);
        var context = renderer.getContext();
        context.setFont("Arial", 10, "").setBackgroundFillStyle("#eed");
        var stave = new this.VF.Stave(10, 40, 400);
        stave.addClef("treble").addTimeSignature("4/4");
        stave.setContext(context).draw();
     }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM