【发布时间】:2019-11-13 11:39:09
【问题描述】:
我有一个 Angular 8 应用程序,其中嵌入了出色的 monaco 编辑器,用于进行一些公式编辑。 到目前为止它运行良好,但建议列表 = CompletionItems 需要动态更改。
我正在使用 ngx-monaco-editor 模块并在 app 模块中提供我的语言定义:
MonacoEditorModule.forRoot(MyMonacoLanguageConfig)
类似这样的配置:
const MonacoAirLanguageConfig: NgxMonacoEditorConfig = {
onMonacoLoad: function () {
monaco.languages.register({ id: 'myCoolLang' });
monaco.languages.setLanguageConfiguration('myCoolLang', { ...});
monaco.languages.registerCompletionItemProvider('myCoolLang', {
provideCompletionItems: (model, position) => {
return {
suggestions: [
{
label: 'ThisHasToBeReplaced',
kind: monaco.languages.CompletionItemKind.Function,
insertText: 'ThisHasToBeReplacedWithSomethingCool()',
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
}]
};
}
});
}
};
export default MonacoAirLanguageConfig;
然后我在我的组件中使用 monaco 编辑器
<ngx-monaco-editor [options]="editorOptions" (onInit)="initLanguage($event)"></ngx-monaco-editor>
我可以在 provideCompletionItems 中调用服务器,但我无法引用我的服务,也没有来自使用 monaco 编辑器的组件的上下文。 我试图在 onInit 事件中更改语言注册,但似乎为时已晚。
我迷路了。抱歉 :-/ 感谢您的帮助。
【问题讨论】:
-
不知道为什么这被否决了。我也有合法的问题,您在下面的回答很聪明。
标签: angular monaco-editor