Ich versuche Codemirror mit Angular 2 (TypeScript) zu verknüpfen. Derzeit kann ich CodeEditor mit einer benutzerdefinierten codearea-Direktive anzeigen, die dynamisch eine Skriptdatei lädt und den Textbereich formatiert.Zugriff auf Codemirror-Textbereich in Angular2-Komponente?
Ich bin nicht in der Lage, den Wert zu erhalten, der Benutzer im Textbereich, ich habe versucht, NgModel, value etc, ich denke, Codemirror ist das Entfernen der Textarea und wieder Einfügen, die möglicherweise einen Fehler verursachen.
Ich habe versucht, Onchange und Keyup Event Handler zu verwenden, aber sie werden wiederholt aufgerufen, wenn alles in den Textbereich eingegeben wird. Das ist nicht sinnvoll.
Hier ist der Code of Code-Gebiet Komponente:
import {Component, AfterViewChecked,AfterViewInit} from 'angular2/core';
@Component({
selector: 'code-area',
template: `
<input [(ngModel)]="ic_code">
<textarea [(ngModel)]="ic_code" id='problem2' name='problem2' rows='10' cols='80'>
</textarea>
<div>
<textarea [(ngModel)]="ic_code" id='problem1' name='problem2' rows='10' cols='80'>
int main(){
}
</textarea>
</div>
<button (click)="submit_clicked()">Submit</button>
<input [(ngModel)]="ic_code">
`
})
export class CodeArea implements AfterViewInit,AfterViewChecked{
public ic_code;
public ic_code2;
public ic_codediv;
constructor(){
this.ic_code = "";
System.import('app/applycodemirror')
.then(refToLoadedScript => {
applycodestyle();
});
}
ngAfterViewInit(){
console.log("AFter view init called in CodeArea");
}
ngAfterViewChecked(){
}
onChange(){
//This is being repeatedly called
}
submit_clicked() {
//I need the code here ,when user clicks on submit
}
onKey(event: any) {
console.log(event.target.value+' ');
}
}
Hier ist die externe js
function applycodestyle(){
if(document.getElementById("problem1") != null){
console.log("Problem 1 present");
var cEditor = CodeMirror.fromTextArea(document.getElementById("problem1"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-csrc",
});
}else{
console.log("Problem 1 null");
}
}
Hey Kit, können Sie ein kleines Codebeispiel auf Plunker posten, erklären, wie Sie elementref eingestellt haben, und können Sie das zweite Code-Snippet erklären, das Sie benutzt haben? – abhirulz
ein Plünderer wäre zu viel zeitaufwendig, sorry. [elementRef] (https://angular.io/docs/js/latest/api/core/ElementRef-class.html) ist ein Dienst von angular, mit dem Sie das DOM der Komponente mit der Eigenschaft nativeElement abrufen können. nativeElement ist nur ein DOM-Element mit all seinen Leckerbissen. Verwenden Sie z. querySelector-Methode zum Abrufen des DOM-Elements, auf dem CodeMirror ausgelöst werden soll. über sec code snipper. Code-Spiegelinstanz verfügt über einen Ereignis-Listener. Du aktivierst es mit on(). Dort haben Sie Zugriff auf Editor, von dem Sie Doc und Wert nehmen können. – kit
Importieren Sie CodeMirror, ich meine, dass Dosent Typescript einen Fehler wirft, da CodeMirror nicht verfügbar wäre. – abhirulz