2016-03-07 6 views
1

Я только начинаю с Angular 2, и я сталкиваюсь с следующей проблемой.угловая 2 пользовательская директива OnInit

Ниже приведена простая пользовательская директива, которая должна окрасить зеленый шрифт. Однако в ngOnInit он не может получить доступ к строке «defaultColor», console.log возвращает «undefined».

Любая подсказка почему?

Cheers!

import {Directive, ElementRef, OnInit} from 'angular2/core'; 

@Directive({ 
    selector: '[myHighlight]' 
}) 

export class HighlightDirective implements OnInit{ 
    private elRef:ElementRef; 
    private defaultColor: 'green'; 

    constructor(elRef:ElementRef){ 
     this.elRef = elRef; 
    } 

    ngOnInit():any { 
     this.elRef.nativeElement.style.color = this.defaultColor; 
     console.log(this.defaultColor) 
    } 

} 

ответ

0

Синтаксис неправильный.

private defaultColor:string = 'green'; 

Значение присваивается с помощью = не :. : - определить тип поля.

+0

Hi Gunter: \! Я понимаю, что существует ошибка sysntax. Тем не менее мой код работает. Я не знаю, как это сделать. Я реализовал то же, что предложил пользователь. – micronyks

+0

Я вижу. Могут быть зависеть от используемых вами инструментов разработки, насколько строго они связаны с синтаксисом. –

+0

Я реализовал его с помощью 'Plunker'. Не знаю почему. Неважно ! – micronyks

0

Working Demo

boot.ts

import {Component,bind} from 'angular2/core'; 
import {bootstrap} from 'angular2/platform/browser'; 
import {FORM_DIRECTIVES} from 'angular2/form'; 
import {selectedColorDirective} from 'src/directive'; 
import {Directive, ElementRef, Renderer, Input,ViewChild,AfterViewInit} from 'angular2/core'; 
@Component({ 
    selector: 'my-app', 
    template: ` 
      <div mySelectedColor> (div) I'm {{color}} color </div> 
    `, 
    directives: [selectedColorDirective] 
}) 

export class AppComponent implements AfterViewInit{ 

} 

bootstrap(AppComponent, []); 

directive.ts

import {Directive, ElementRef, Renderer, Input} from 'angular2/core'; 

@Directive({ 
    selector:"[mySelectedColor]", 
}) 

    export class selectedColorDirective { 

    private defaultColor: 'green'; 
    constructor(el: ElementRef, renderer: Renderer) { 
     this.el=el; 
     //this.el.nativeElement.style.backgroundColor = this.defaultColor; 
     this.el.nativeElement.style.color = this.defaultColor; 
    } 

     ngOnInit():any { 
      this.elRef.nativeElement.style.color = this.defaultColor; 
      console.log(this.defaultColor) 
     } 
    } 
Смежные вопросы