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.
と呼ばれていないことを確認し、複数回呼び出され、コンソールであることがわかりはあなたに正しい値を与えていますか?私はgetPostionが早すぎて呼び出されたと思われます。最初にViewChildrenを使ってngAfterViewInitの位置を変更することができます。 ViewChildren usage:http://stackoverflow.com/q/38149322/652850 –
は、 '#timeLineRow'を追加し、このngAfterViewInit(@ViewChild( 'timeLineRow')のmyDivでmyDivをngAfterViewInitに実装することで、timslotRow bijの識別子を作成しました。 )が空です... レンダリングが完了する前にngAfterViewInitが呼び出されました。( – Paul
があまりにも早く入力されました:) – Paul