2016-04-11 18 views
0

ElementRef backToTopTargetを.back-to-topに渡します。しかし、私はngOnChangesローカル変数をディレクティブに入力として渡します

<section #backToTopTarget> 
    <section class="back-to-top" [target]="backToTopTarget"> 
     Back to top <i class="fa fa-angle-up"></i> 
    </section> 
</section> 

/// <reference path="../../../typings/angular2.d.ts" /> 

import {Directive, Input, OnChanges, ElementRef} from 'angular2/core'; 
import {BaseComponent} from "../../BaseComponent/BaseComponent"; 

@Directive({ 
    selector: '.back-to-top', 
}) 
export class BackToTop implements OnChanges { 
    private $el; 
    @Input('target') private target; 
    private $target; 

    constructor(private el: ElementRef) { 
     this.$el = $(this.el.nativeElement); 
    } 

    ngOnChanges({target}) { 
     // target.currentValue === undefined 
    } 
} 

だから私は何も私はそれが間違ってやっているではないか、できてそれを得ることができませんか?

答えて

1

check plunker it works

ngOnChanges(...args:any[]) 
{ 
    console.log(args[0].target); // according to my plunker code 
} 
+0

ありません一つだけの引数があり、JSONは以下の通りです: '{ "ターゲット":{ "previousValue":{}}}' – tom10271

+0

確認して実装してください。 'args'の中に' target'の値があることを確信しています。 – micronyks

+0

'backToTopTarget'のデフォルト値はありますか?何がうまくいくのでしょうか? – micronyks

1

私は$(this.el.nativeElement)が行うことになっているかわからないんだけど。

これは私のために正常に動作します:

@Directive({ 
    selector: '.back-to-top', 
}) 
export class BackToTop implements OnChanges { 
    private $el; 
    @Input() private target; 
    private $target; 

    constructor(private el: ElementRef) { 
     this.$el = this.el.nativeElement; 
    } 

    ngOnChanges(changes) { 
     console.debug(this.target); 
     // outputs `<section></section>` 
    } 
} 

@Component({ 
    selector: 'my-app', 
    directives: [BackToTop], 
    template:` 
<section #backToTopTarget> 
    <section class="back-to-top" [target]="backToTopTarget"> 
     Back to top <i class="fa fa-angle-up"></i> 
    </section> 
</section> 
    `, 
}) 
export class App { 
} 

Plunker example

関連する問題