2016-07-02 11 views
0

#ID与えられたの本部の位置を取得:だから最初、私はこれらのTimslotの上に、その後のタイムスロット(4日あたり)とを構築Angular2私は以下のようにして、Angular2でタイムラインのスケジュールを構築してい

 <div class="timelineRow" *ngFor="let team of teams"> 
      <div class="RowDescriptionColumn">{{team.title}}</div> 
      <div class="scheduleblock" *ngFor="let date of dates; let index=index; let odd=odd; let even=even;"> 
       <div class="timeslot1" [ngClass]="{ odd: odd, even: even }" [attr.id]="team.teamId +'_'+ date.id +'_ts1'"></div> 
       <div class="timeslot2" [ngClass]="{ odd: odd, even: even }" [attr.id]="team.teamId +'_'+ date.id +'_ts2'"></div> 
       <div class="timeslot3" [ngClass]="{ odd: odd, even: even }" [attr.id]="team.teamId +'_'+ date.id +'_ts3'"></div> 
       <div class="timeslot4" [ngClass]="{ odd: odd, even: even }" [attr.id]="team.teamId +'_'+ date.id +'_ts4'"></div> 
      </div> 
      <div class="eventBlock" *ngFor="let event of events" [style.left]="getPosition(team, event)">{{event.title}}</div> 
     </div> 

を-Divs私はイベントを横たえたい。イベントは、正しい日に開始することがあるので、私は(私が知っている:悪)のjQueryを実行して、位置を取得しよう...

getPosition(team, event): string { 
    if (this.dates) { 
     let left = "0px"; 
     let found = this.dates.filter(myObj => new Date(myObj.date).toDateString() === new Date(event.start).toDateString())[0]; 
     if (found) { 
     let pos = jQuery(this.elementRef.nativeElement).find('#' + team.teamId + '_' + found.id + '_' + 'ts3').position(); 
     console.log(pos); 
     if (pos) { 
      left = pos.left + "px"; 
     } 
     } 
     return left; 
    } 
    } 

このdoesntの仕事を、私は開始を取得する方法を見つけ出すカント"下層" タイムスロット-本部の位置..

P.

+0

と呼ばれていないことを確認し、複数回呼び出され、コンソールであることがわかりはあなたに正しい値を与えていますか?私はgetPostionが早すぎて呼び出されたと思われます。最初にViewChildrenを使ってngAfterViewInitの位置を変更することができます。 ViewChildren usage:http://stackoverflow.com/q/38149322/652850 –

+0

は、 '#timeLineRow'を追加し、このngAfterViewInit(@ViewChild( 'timeLineRow')のmyDivでmyDivをngAfterViewInitに実装することで、timslotRow bijの識別子を作成しました。 )が空です... レンダリングが完了する前にngAfterViewInitが呼び出されました。( – Paul

+0

があまりにも早く入力されました:) – Paul

答えて

0

私はgetPostionが早すぎると呼ばれている疑いがあります。ビューにコンポーネントを作成させてから、ViewChildren/ViewChildを使用してngAfterViewCheckedに再配置できますか? Viewchildren usage ngAfterViewCheckedので、あなたの再配置のロジックは再び