@@ -3,15 +3,15 @@ import {
33 AfterViewInit ,
44 Input ,
55 ElementRef ,
6- Renderer2
6+ Renderer2 ,
7+ OnChanges
78} from '@angular/core' ;
89
910@Component ( {
1011 selector : 'pc-prism' ,
11- template : `` ,
12- styleUrls : [ './prism.component.scss' ]
12+ template : ``
1313} )
14- export class PrismComponent implements AfterViewInit {
14+ export class PrismComponent implements OnChanges {
1515 @Input ( ) code : string ;
1616 @Input ( ) language : string ;
1717 private preNode : Element ;
@@ -22,14 +22,16 @@ export class PrismComponent implements AfterViewInit {
2222 this . nativeElement = _el . nativeElement ;
2323 }
2424
25- ngAfterViewInit ( ) {
26- this . preNode = this . _renderer . createElement ( 'pre' ) ;
27- this . codeNode = this . _renderer . createElement ( 'code' ) ;
28- this . _renderer . addClass ( this . codeNode , 'language-' + this . language ) ;
29- this . _renderer . addClass ( this . preNode , 'pc-prism' ) ;
30- this . _renderer . appendChild ( this . nativeElement , this . preNode ) ;
31- this . _renderer . appendChild ( this . preNode , this . codeNode ) ;
32- this . codeNode . textContent = this . code ;
33- Prism . highlightElement ( this . codeNode , Prism . languages [ this . language ] ) ;
25+ ngOnChanges ( ) {
26+ if ( this . code && this . language ) {
27+ this . preNode = this . _renderer . createElement ( 'pre' ) ;
28+ this . codeNode = this . _renderer . createElement ( 'code' ) ;
29+ this . _renderer . addClass ( this . codeNode , 'language-' + this . language ) ;
30+ this . _renderer . addClass ( this . preNode , 'pc-prism' ) ;
31+ this . _renderer . appendChild ( this . nativeElement , this . preNode ) ;
32+ this . _renderer . appendChild ( this . preNode , this . codeNode ) ;
33+ this . codeNode . textContent = this . code ;
34+ Prism . highlightElement ( this . codeNode , Prism . languages [ this . language ] ) ;
35+ }
3436 }
3537}
0 commit comments