2016-10-01 2 views
1

변수 입력/출력을 바인드 할 수 없습니다. 내가 뭘 잘못하고 있는지 모르겠다.지시문 입력/출력의 각도 2 문제

HTML 여기

<p [timeDelta]="'2016-09-20 00:00:00'">{{delta}}</p> 

내 지시자이다

import { Directive, ElementRef, Input, Output, Renderer, EventEmitter } from '@angular/core'; 

@Directive({ selector: '[timeDelta]' }) 
export class TimeDeltaDirective { 
    @Input('timeDelta') myDate: string; 
    @Output() delta: string; 

    constructor(renderer: Renderer, el: ElementRef) { 
     console.log(this); 
     console.log(this.myDate); 
     this.delta = (this.myDate); 
    } 
} 

제 CONSOLE.LOG (이) 정확한 값 반환

  • TimeDeltaDirective 객체 {델타 : 미정, MyDate가 : "2016-09-20 00:00:00"}

두 번째 결과가 반환됩니다. 정의되지 않음

왜? 마이크로 초에 myDate를 가진 전체 객체를 출력하지만 this.myDate에 액세스하는 동안 정의되지 않은 값을 반환합니다.

도와주세요. 고맙습니다.

답변

1

@Inputs()은 아직 할당되지 않았습니다. constructor()이 실행될 때. 대신 생성자

constructor(renderer: Renderer, el: ElementRef) { 
    console.log(this); 
    console.log(this.myDate); 
    this.delta = (this.myDate); 
    } 

constructor(renderer: Renderer, el: ElementRef) {} 

ngOnChanges(...) { 
    // inputs are updated 
} 

ngOnInit() { 
    // executes after ngOnChanges was called the first time 
    console.log(this); 
    console.log(this.myDate); 
    this.delta = (this.myDate); 
} 

사용 ngOnInit 후크