Свойство 'JavaScript' не существует для типа 'typeof Blockly'

Я интегрировал библиотеку Google Blockly в проект Angular, но получаю следующую ошибку, когда хочу преобразовать элементы моей рабочей области в код javascript. Я сделал пример с той же библиотекой, используя ванильный скрипт, и у меня не было проблем. СПАСИБО, если у вас есть предложения по устранению этой ошибки.

введите описание изображения здесь

Демонстрация с использованием ванильного скрипта

Код моего компонента:

import { Component,OnInit } from '@angular/core';

import * as Blockly from 'blockly';

@Component({
  selector: 'app-blockly',
  templateUrl: './blockly.component.html',
  styleUrls: ['./blockly.component.css']
})
export class BlocklyComponent implements OnInit {

  workspace: any;

  ngOnInit(): void {

    const toolbox = `
    <xml id="toolbox" style="display: none">
    <category name="Variables" custom="VARIABLE" colour="330"></category>
    <category name="Functions" custom="PROCEDURE" colour="330"></category>
    <category name="Logic" colour="210">
        <block type="controls_if"></block>
        <block type="logic_compare"></block>
        <block type="logic_operation"></block>
        <block type="logic_boolean"></block>
    </category>
    <category name="Loops" colour="120">
        <block type="controls_whileUntil"></block>
        <block type="controls_repeat_ext"></block>
        <block type="controls_for"></block>
    </category>
    <category name="Math" colour="230">
        <block type="math_number"></block>
        <block type="math_arithmetic"></block>
    </category>
    <category name="Functions" colour="290" custom="PROCEDURE"></category>
    <category name="Text" colour="150">
        <block type="text"></block>
        <block type="text_print"></block>
    </category>
    <category name="Login" colour="300">
        <block type="login"></block>
    </category>
    </xml>`;

    this.workspace = Blockly.inject('blocklyDiv',
      {
        toolbox,
        zoom:
        {
          controls: true,
          wheel: true,
          startScale: 1.0,
          maxScale: 2,
          minScale: 0.5,
          scaleSpeed: 1.2
        }
      });

    this.workspace.addChangeListener(this.Update);

  }

  Update(event) {

    let code = Blockly.JavaScript.workspaceToCode(this.workspace);
    document.getElementById('code').innerHTML = code;

  }
}

person Angel    schedule 23.06.2020    source источник


Ответы (1)


Я нашел одно решение:

//Update generated code
  Update(event) {
     
     let code = (Blockly as any).JavaScript.workspaceToCode(Blockly.mainWorkspace);
     document.getElementById('code').innerHTML = code;

  }
person Angel    schedule 24.06.2020