我的怀疑
我创建了一个monaco 代码编辑器作为 Angular 自定义组件。我想让这个组件响应。
我在某些测试组件(考虑父组件)中呈现编辑器组件(考虑子组件)。
如果我增加测试组件的宽度和高度,那么它会调用一个函数并触发一个自定义事件。
引发自定义事件
var codeEditorResizeEvent = new CustomEvent("codeEditorResize", { 'detail': component });
document.body.dispatchEvent(codeEditorResizeEvent);
Monaco 代码编辑器组件像这样捕获该事件:
fromEvent(document.body, 'codeEditorResize').subscribe(res => {
console.log("*************", res) //statement exicuted on firing some button from other component
//resize monaco editor here
});
我也想调整摩纳哥代码编辑器(自定义组件)的大小。
我怎样才能使这个动态调整大小?
我的代码编辑器组件:
组件类
export class CodeEditorComponent implements OnInit {
editorOptions = { theme: 'vs-dark', language: 'javascript' };
constructor() {}
ngOnInit() {
//register custom event browser level and catching the event
fromEvent(document.body, 'codeEditorResize').subscribe(res => {
console.log("*************", res) //statement exicuted on firing some button from other component
//resize monaco editor here
});
}
loadTypes(event?: any) {
const monaco = (<any>window).monaco;
const typeFiles: string[] = [
'person.d.ts',
'app-session.ts',
'apptor-form.ts'
];
monaco.languages.typescript.typescriptDefaults.setCompilerOptions({
noLib: true,
allowNonTsExtensions: true
});
}
角部
<ngx-monaco-editor style="height:100%" [options]="editorOptions" #editor [(ngModel)]="code" (onInit)="loadTypes($event)"></ngx-monaco-editor>
测试组件
(这是从其他组件触发事件)
resize(component: any) {
var codeEditorResizeEvent = new CustomEvent("codeEditorResize", { 'detail': component });
document.body.dispatchEvent(codeEditorResizeEvent);
}