2017-03-06 32 views
1

我嘗試使用具有角2.我的分量微軟摩納哥編輯器的ReferenceError:摩納哥沒有定義

declare const monaco: any; 
declare const require: any; 

export class MonacoEditorComponent implements AfterViewInit { 
    ngAfterViewInit() { 

     let onGotAmdLoader =() => { 
      // Load monaco 
      (<any>window).require(["vs/editor/editor.main"],() => { 

       this.initMonaco(); 
      }); 
     }; 

     // Load AMD loader if necessary 
     if (!(<any>window).require) { 
      let loaderScript = document.createElement("script"); 
      loaderScript.type = "text/javascript"; 
      loaderScript.src = "vs/loader.js"; 
      loaderScript.addEventListener("load", onGotAmdLoader); 
      document.body.appendChild(loaderScript); 
     } else { 
      onGotAmdLoader(); 
     } 
    } 

    initMonaco() { 
     let myDiv: HTMLDivElement = this.editorContent.nativeElement; 
     let options = this.options; 
     options.value = this._value; 
     options.language = this.language; 
     this._editor = monaco.editor.create(myDiv, options); 
    } 
} 

所以基本上,我試圖加載摩納哥第一個通過檢查的,如果條件window.require,一旦摩納哥的主editor.main文件被加載我想創建一個編輯器使用monaco.editor.create()。但即使在加載editor.main.js之後,它也無法解析摩納哥。我試圖在initMonaco函數中調試並查看monaco的值,但它顯示爲不可用。難道我做錯了什麼?

注意:VS已經解析到摩納哥編輯器/ min/vs,並且它也能夠將js文件加載到瀏覽器。此外,像選項和_value所使用的所有變量在組件中聲明(我從這裏刪除它們)。

+0

你在哪裏啓動了「摩納哥」? –

+0

摩納哥應該由摩納哥的editor.main.js文件解決嗎? – Sri

+0

不可以。您必須在上下文中爲其提供參考 –

回答

0

如果別人也在尋找這個,我能夠解決問題,其實問題是摩納哥只會加載它自己的加載程序,我們在我們的項目中使用了systemjs加載程序。當我們嘗試用摩納哥裝載機提供的裝載機時,它運行良好。不同的是,摩納哥裝載程序正在向加載程序添加一些額外的功能,如配置文件,這些功能在systemjs加載程序中不可用。